unsigned int cnt1[256|1],cnt2[256|1],cnt3[256|1],cnt4[256|1];
int tmp[10001];
void sort(unsigned a[],int n)
{
for(register int i=0;i<n;++i)
++cnt1[a[i]&0xff],
++cnt2[a[i]>>8&0xff],
++cnt3[a[i]>>16&0xff],
++cnt4[a[i]>>24&0xff];
for(register int i=1;i<256;++i)
cnt1[i]+=cnt1[i-1],
cnt2[i]+=cnt2[i-1],
cnt3[i]+=cnt3[i-1],
cnt4[i]+=cnt4[i-1];
for(register int i=n;i;--i)tmp[--cnt1[a[i]&0xff]]=a[i];
for(register int i=n;i;--i)a[--cnt2[tmp[i]>>8&0xff]]=tmp[i];
for(register int i=n;i;--i)tmp[--cnt3[a[i]>>16&0xff]]=a[i];
for(register int i=n;i;--i)a[--cnt4[tmp[i]>>24&0xff]]=tmp[i];
}