void sort(unsigned *a, int n)
{
int mx = 0, sta[10], output[100000010];
for(register int i = 0; i < n; i ++)
mx = (mx < a[i]) ? a[i] : mx;
for(register int x = 1; mx > 0; mx /= 10, x *= 10)
{
memset(sta, 0, sizeof(sta));
for(register int i = 0; i < n; i ++)
sta[(a[i] / x) % 10] ++;
for(register int i = 1; i < 10; i ++)
sta[i] += sta[i - 1];
for(register int i = n - 1; i >= 0; i --)
output[sta[(a[i] / x) % 10] - 1] = a[i], sta[(a[i] / x) % 10] --;
for(register int i = 0; i < n; i ++)
a[i] = output[i];
}
}