/// Gheorghies Alexandru /// this problem is really painful to implement #include using namespace std; typedef long long ll; typedef pair pll; const ll NMAX=1e5+5,NSQRMAX=1.6e7+5,MOD=1e9+7; ll b[NMAX],actualnxt[NMAX],actualprv[NMAX],n,m; ll ans[NSQRMAX],tmpans[NMAX]; ll prv[NMAX],nxt[NMAX],last[NMAX]; ll f(ll i1, ll i2, ll j){ return m*((n*(n+1)-(n-i1)*(n-i1+1))/2+i2-i1)+j; } void Push_back(ll p){ if(last[b[p]]==-1) prv[p]=-1,nxt[p]=-1; else nxt[last[b[p]]]=p,prv[p]=last[b[p]],nxt[p]=-1; last[b[p]]=p; } void Erase(ll p){ if(nxt[p]==-1 && prv[p]==-1){ last[b[p]]=-1; return; } if(prv[p]!=-1) nxt[prv[p]]=nxt[p]; if(nxt[p]!=-1) prv[nxt[p]]=prv[p]; nxt[p]=prv[p]=-1; } int main() { #ifndef ONLINE_JUDGE freopen("in.txt","r",stdin); freopen("out.txt","w",stdout); #endif ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); for(ll i=0;i>n>>m; if(n<=m){ for(ll i=0;i>b[i*m+j]; } else{ for(ll i=0;i>b[j*n+i]; swap(n,m); flipped=1; } for(ll i1=0;i1=i1;i2--){ for(ll j=0;j=0;j--){ ll p=i2*m+j; if(actualprv[p]>=0) tmpans[actualprv[p]]=min(tmpans[actualprv[p]],j); if(actualnxt[p]=0;j--){ tmpans[j]=min(tmpans[j],tmpans[j+1]); ans[f(i1,i2,j)]=tmpans[j]-1; } } } cin>>q; while(q--){ ll a,b,c,d; cin>>a>>b>>c>>d; if(flipped) swap(a,b),swap(c,d); a--,b--,c--,d--; if(ans[f(a,c,b)]>=d) cout<<"YES\n"; else cout<<"NO\n"; } return 0; }