#include <ctime>
#include <random>
template<typename T>
void QSort(int l, int r, T *arr, std::mt19937 &mtgen) {
using namespace std;
uniform_int_distribution<int> dist(l, r);
T pivot = arr[dist(mtgen)];
int i = l, j = r;
do {
while (arr[j] > pivot)
j--;
while (arr[i] < pivot)
i++;
if (i <= j)
swap(arr[i++], arr[j--]);
} while (i <= j);
if (i < r)
QSort(i, r, arr, mtgen);
if (l < j)
QSort(l, j, arr, mtgen);
}
void sort(unsigned *a, int n) {
std::mt19937 mtgen(time(NULL));
QSort(0, n - 1, a, mtgen);
}