#include <cstdio>
#include <cstring>
using namespace std;
inline void sort(unsigned *a,int n) {
static unsigned int sort_c[256],*sort_r=a+n,*sort_x=new unsigned int[n];
memset(sort_c,0,sizeof(sort_c));
for (unsigned int *i=a;i<sort_r;++i) ++sort_c[(*i)&255];
for (unsigned int i=1;i<256;++i) sort_c[i]+=sort_c[i-1];
for (unsigned int *i=sort_r-1;i>=a;--i) sort_x[--sort_c[(*i)&255]]=*i;
memcpy(a,sort_x,(sort_r-a)*sizeof(int));
memset(sort_c,0,sizeof(sort_c));
for (unsigned int *i=a;i<sort_r;++i) ++sort_c[((*i)>>8)&255];
for (unsigned int i=1;i<256;++i) sort_c[i]+=sort_c[i-1];
for (unsigned int *i=sort_r-1;i>=a;--i) sort_x[--sort_c[((*i)>>8)&255]]=*i;
memcpy(a,sort_x,(sort_r-a)*sizeof(int));
memset(sort_c,0,sizeof(sort_c));
for (unsigned int *i=a;i<sort_r;++i) ++sort_c[((*i)>>16)&255];
for (unsigned int i=1;i<256;++i) sort_c[i]+=sort_c[i-1];
for (unsigned int *i=sort_r-1;i>=a;--i) sort_x[--sort_c[((*i)>>16)&255]]=*i;
memcpy(a,sort_x,(sort_r-a)*sizeof(int));
memset(sort_c,0,sizeof(sort_c));
for (unsigned int *i=a;i<sort_r;++i) ++sort_c[((*i)>>24)&255];
for (unsigned int i=1;i<256;++i) sort_c[i]+=sort_c[i-1];
for (unsigned int *i=sort_r-1;i>=a;--i) sort_x[--sort_c[((*i)>>24)&255]]=*i;
memcpy(a,sort_x,(sort_r-a)*sizeof(int));
}