#include<bits/stdc++.h>#include<cmath>#define mem(a,b) memset(a,b,sizeof a)#define ssclr(ss) ss.clear(), ss.str("")#define INF 0x3f3f3f3f#define MOD 1000000007usingnamespacestd;
typedeflonglongll;
constintmaxn=1e4+10;
inta[maxn], b[maxn], len, k;
voidshift_up(inti)
{
while((i>>1)>=1)
{
if(a[i]<a[i>>1]) swap(a[i],a[i>>1]);
elsereturn;
i>>=1;
}
}
voidshift_down(inti)
{
intt;
while((i<<1)<=len)
{
t=i<<1;
if(t<len&&a[t]>a[t+1]) t++;
if(a[t]<a[i]) swap(a[t],a[i]);
elsereturn;
i=t;
}
}
voidheap_push(intnum)
{
a[++len]=num;
shift_up(len);
}
voidheap_build()
{
inti, f, l, r, p, cid;
while(1)
{
f=0, i=len;
while((i>>1)>=1)
{
p=i>>1, l=p<<1, cid=l;
if(l+1<=len)
{
r=l+1;
if(a[r]<a[l]) cid=r;
}
if(a[cid]<a[p]) f=1, swap(a[cid],a[p]);
i=(p-1)<<1;
}
if(!f) return;
}
}
voidheap_pop()
{
swap(a[1],a[len]);
len--;
shift_down(1);
}
intheap_top()
{
returnlen==0?-INF : a[1];
}
boolheap_empty()
{
return!len;
}
voidheap_sort()
{
k=0;
while(len>0)
{
b[k++]=heap_top();
heap_pop();
}
}
intmain()
{
intn,num;
scanf("%d",&n);
for(inti=1;i<=n;i++) scanf("%d",&num), heap_push(num); for(inti=1;i<=len;i++) printf("%d ",a[i]); puts("");
for(inti=1;i<=n;i++) scanf("%d",&a[++len]);
heap_build(); for(inti=1;i<=len;i++) printf("%d ",a[i]); puts("");
heap_sort();
for(inti=0;i<k;i++) printf("%d ",b[i]); puts("");
return0;
}