void prepare() {
int i;
for(int i=1;i<=n;i++)
data[i]=a[i].y;
sort(data+1,data+n+1);
int m=unique(data+1,data+n+1)-data-1;
for(int i=1;i<=n;i++) a[i].y=lower_bound(data+1,data+m+1,a[i].y)-data;
}
int i;
for(int i=1;i<=n;i++)
data[i]=a[i].y;
sort(data+1,data+n+1);
int m=unique(data+1,data+n+1)-data-1;
for(int i=1;i<=n;i++) a[i].y=lower_bound(data+1,data+m+1,a[i].y)-data;
}