#include <vector>
#include <iostream>
 
using namespace std;
 
int partition(int l, int r, vector<int>& nums) {
    int pivot = nums[r];
    int j = l - 1;
    for(int i = l; i < r; i++) {
        if(nums[i] < pivot) {
            j++;
            swap(nums[j], nums[i]);
        }
    }
    j++;
    swap(nums[j], nums[r]);
    return j;
}
 
void quick_sort(int l, int r, vector<int>& nums) {
    if(l >= r) return;
    int k = partition(l, r, nums);
    quick_sort(l, k - 1, nums);
    quick_sort(k + 1, r, nums);
}
 
 
int main() {
    vector<int> nums = {1, 4, 2, -1};
    int n = nums.size();
    quick_sort(0, n - 1, nums);
 
    for(auto n: nums) {
        cout << n << " ";
    }
    cout << endl;
}