volatile unsigned long long SINK;
void sort(unsigned *a, int n){
static unsigned cnt[256];
for (int i = 0; i < 256; i++) cnt[i] = (unsigned)((long long)i * n / 256);
for (int i = n - 1; i >= 0; i--) {
unsigned v = a[i];
unsigned b = v & 255;
a[cnt[b]++] = v;
}
SINK = a[0] + cnt[0];
}