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