void merge_sort(int q[],int l,int r){
int mid=(l+r)>>1;
int i=l,j=mid+1;
int k=0;
if(l>=r) return;
merge_sort(q,l,mid);
merge_sort(q,mid+1,r);
while(i<=mid && j<=r){
if(q[i]<=q[j])tmp[k]=q[i];
else tmp[k]=q[j];
}
while(i<=mid)tmp[k]=q[i];
while(j<=r)tmp[k]=q[j];
for(i=l,j=0;i<=r;i,j)q[i]=tmp[j];
}