#include<iostream>
#include <type_traits>
#include <vector>
using namespace std;
void quick(vector<int>& nums, int start, int end) {
if(start >= end) {
return;
}
int flag = nums[end];
int s = start, f = end - 1;
while(s < f) {
while(nums[s] < flag && s < f) {
s++;
}
while(nums[f] > flag && s < f) {
f--;
}
swap(nums[s], nums[f]);
}
if(nums[s] >= nums[end]) {
swap(nums[s], nums[end]);
}else {
s++;
}
quick(nums, start, s - 1);
quick(nums, s + 1, end);
}
void printV(vector<int>& nums) {
for(int num : nums) {
cout << num << " ";
}
}
int main() {
vector<int> nums = {1, 5, 6, 9, 23, 45, 1, 7, 7};
quick(nums, 0, nums.size() - 1);
printV(nums);
return 0;
}