void qs(vector<int>& a, int l, int r) {
if(l>=r) return;
swap(a[l],a[rand()%(r-l+1)+l]);
int j=l;
for(int i=l+1;i<=r;i++) if(a[i]<a[l]) swap(a[++j],a[i]);
swap(a[l],a[j]);
qs(a,l,j-1);
qs(a,j+1,r);
}
void qs(vector<int>& a, int l, int r) {
if(l>=r) return;
swap(a[l],a[rand()%(r-l+1)+l]);
int j=l;
for(int i=l+1;i<=r;i++) if(a[i]<a[l]) swap(a[++j],a[i]);
swap(a[l],a[j]);
qs(a,l,j-1);
qs(a,j+1,r);
}