#define b 2048u
#define d 2047u
#define N 100000000
unsigned t[100000005],c[2048];
void sort(unsigned*a,int n)
{
for(register int i=N;i--;)++c[a[i]&d];
for(register int i=1;i<b;++i)c[i]+=c[i-1];
for(register int i=N;i--;)t[--c[a[i]&d]]=a[i];
for(register int i=0;i<b;++i)c[i]=0;
for(register int i=N;i--;)++c[a[i]>>11&d];
for(register int i=1;i<b;++i)c[i]+=c[i-1];
for(register int i=N;i--;)a[--c[t[i]>>11&d]]=t[i];
for(register int i=0;i<b;++i)c[i]=0;
for(register int i=N;i--;)++c[a[i]>>22&d];
for(register int i=1;i<b;++i)c[i]+=c[i-1];
for(register int i=N;i--;)t[--c[a[i]>>22&d]]=a[i];
for(register int i=N;i--;)a[i]=t[i];
}