#pragma GCC optimize("Ofast")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4")
#include <cstring>
void sort(unsigned *a,int n){
const int S=2049;
int c0[S],c1[S],c2[S];
unsigned b[100000005];
memset(c0,0,sizeof c0);
memset(c1,0,sizeof c1);
memset(c2,0,sizeof c2);
for (register int i=0;i<n;++i){
c0[a[i]&2047]++;
c1[a[i]>>11&2047]++;
c2[a[i]>>22]++;
}
for (register int i=1;i<2048;++i)
c0[i]+=c0[i-1],c1[i]+=c1[i-1],c2[i]+=c2[i-1];
for (register int i=n-1;~i;--i)
b[--c0[a[i]&2047]]=a[i];
for (register int i=n-1;~i;--i)
a[--c1[b[i]>>11&2047]]=b[i];
for (register int i=n-1;~i;--i)
b[--c2[a[i]>>22]]=a[i];
for (register int i=0;i<n;i++)
a[i]=b[i];
}