int partition(int a[],int l,int h){
int privo = a[l];
while(l<h){
while(l<h&&a[h]>=privo)--h;
a[l]=a[h];
while(l<h&&a[l]<=privo)++l;
a[h]=a[l];
}
a[l]=privo;
return l;
}
void qsort(int a[],int l,int h){
if(l<h){
int loc = partition(a,l,h);
qsort(a,l,loc-1);
qsort(a,loc+1,h);
}
}
int privo = a[l];
while(l<h){
while(l<h&&a[h]>=privo)--h;
a[l]=a[h];
while(l<h&&a[l]<=privo)++l;
a[h]=a[l];
}
a[l]=privo;
return l;
}
void qsort(int a[],int l,int h){
if(l<h){
int loc = partition(a,l,h);
qsort(a,l,loc-1);
qsort(a,loc+1,h);
}
}