#include <algorithm>
#include <cstring>
const int maxn = 100010;
const int base = 256;
const int bit = 8;
int b[maxn], cnt[base];
int id(int x, int d) {
return (x >> bit * d) & (base - 1);
}
void sort(unsigned *a, int n) {
int *x = a, *y = b;
for (int d = 0; d < 4; ++d) {
memset(cnt, 0, sizeof cnt);
for (int i = 0; i < n; ++i) ++cnt[id(x[i], d)];
for (int i = 1; i < base; ++i) cnt[i] += cnt[i - 1];
for (int i = n - 1; ~i; --i) y[--cnt[id(x[i], d)]] = x[i];
std::swap(x, y);
}
}