#pragma GCC optimize("Ofast")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4")
int c0[65537],c1[65537];
unsigned b[100000005];
void sort(unsigned *a,int n){
for (register int i=0;i<n;++i){
c0[a[i]&65535]++;
c1[a[i]>>16]++;
}
for (register int i=1;i<65536;++i)
c0[i]+=c0[i-1];
for (register int i=1;i<65536;++i)
c1[i]+=c1[i-1];
for (register int i=65535;~i;--i)
b[--c0[a[i]&65535]]=a[i];
for (register int i=65535;~i;--i)
a[--c1[a[i]&65535]]=b[i];
}