void qsort(int* arr, int n) {

if (--n <= 0) return;

int* i = arr, *j = arr + n - 1;

while ([&]()->bool { while (*i < arr[n]) i++;

while (*j > arr[n]) j--; return i <= j; }()) swap(i++, j--);

swap(i, arr + n);

if (arr < j) qsort(arr, j - arr + 1);

if (i < arr + n) qsort(i, arr + n - i + 1);

}