// #1057
#define b 2048u
#define d 2047u
unsigned s[100000000],t[80000000],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--;)s[--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--;)t[--c[s[i]>>11&d]]=s[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--;)a[--c[t[i]>>22&d]]=t[i];
}