#include <bits/stdc++.h>
using namespace std;
const int n = 1e8;
void sort(uint* a, int __n) {
uint* b = (uint*)malloc(n * sizeof(uint) * 2);
uint* c = (uint*)malloc(n * sizeof(uint) * 2);
uint *p1[256], *p2[256];
for (int i = 0; i < 256; i++) p1[i] = b + n / 256 * i * 2;
for (int i = 0; i < n; i++) *p1[a[i] & 255]++ = a[i];
for (int i = 0; i < 256; i++) p2[i] = c + n / 256 * i * 2;
for (int k = 0; k < 256; k++) {
// assert(p1[k] <= b + n / 256 * (k + 1) * 2);
for (auto i = b + n / 256 * k * 2; i != p1[k]; i++)
*p2[*i >> 8 & 255]++ = *i;
}
for (int i = 0; i < 256; i++) p1[i] = b + n / 256 * i * 2;
for (int k = 0; k < 256; k++)
for (auto i = c + n / 256 * k * 2; i != p2[k]; i++)
*p1[*i >> 16 & 255]++ = *i;
for (int i = 0; i < 256; i++) p2[i] = c + n / 256 * i * 2;
for (int k = 0; k < 256; k++)
for (auto i = b + n / 256 * k * 2; i != p1[k]; i++)
*p2[*i >> 24]++ = *i;
auto p = a;
for (int k = 0; k < 256; k++) {
auto len = p2[k] - (c + n / 256 * k * 2);
memcpy(p, c + n / 256 * k * 2, len * sizeof(uint));
p += len;
}
}