#include <algorithm>
void Quicksort(unsigned *a, int l, int r) {
if (l >= r) return;
int i = l, j = r, t = a[rand() * rand() % (r - l + 1) + l];
while (i <= j) {
while (a[j] >= t) j--;
while (a[i] <= t) i++;
if (i <= j) std::swap(a[i++], a[j--]);
}
Quicksort(a, l, j);
Quicksort(a, i, r);
}
void sort(unsigned *a, int n) {
Quicksort(a, 0, n - 1);
}