#include using namespace std; using ll=long long; using pli=pair; int main(){cin.tie(0);ios::sync_with_stdio(false); int N,K1,K2;cin>>N>>K1>>K2; vectorf(N+2),g(3*N); for(int i=1;i<=N;++i){ int t=2*abs(i-K1)+abs(i-K2); f[i]=t; g[t]=i; } setgood,bad; for(int i=1;i<=N;++i){ good.insert(f[i]); } vectorv(N+1); int Q;cin>>Q; priority_queue,greater>pq; ll time=0; for(int _=0;_>A>>B; time=max(time,A); redo: while(pq.size()&&pq.top().first<=time){ int k=pq.top().second;pq.pop(); v[k]=false; if((k-1<1||!v[k-1])&&(k+1>N||!v[k+1])){ good.insert(f[k]); }else{ bad.insert(f[k]); } if(k>1&&!v[k-1]&&(k-2<1||!v[k-2])){ bad.erase(f[k-1]); good.insert(f[k-1]); } if(kN||!v[k+2])){ bad.erase(f[k+1]); good.insert(f[k+1]); } } int k; if(good.size()){ k=*good.begin(); good.erase(k); }else if(bad.size()){ k=*bad.begin(); bad.erase(k); }else{ assert(time