#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=2e5+7;
int ans[N],s[N];
int n,w,x,y,m,num=1;
struct node{
int p,h;
};
struct edge{
int a,t,x;
}a[N];
bool cmp(edge x,edge y){
return x.t<y.t;
}
vector<node> v[N];
void query(int xx){
while(a[num].t<=xx&&num<=m){
if(!s[a[num].a]) ans[a[num].x]=1;
num++;
}
}
signed main(){
cin>>n>>w;
for(int i=1;i<=n;i++){
cin>>x>>y;
if(v[x].empty()) v[x].push_back({i,y-1});
else{
int z=y-v[x][v[x].size()-1].h;
v[x].push_back({i,z-1});
}
}
cin>>m;
for(int i=1;i<=m;i++){
cin>>a[i].t>>a[i].a;
a[i].x=i;
}
sort(a+1,a+m+1,cmp);
int t=1e9;
for(int i=1;i<=w;i++){
t=min(t,(int)v[i].size());
}
int tt=0;
while(t--){
int tim=0;
for(int i=1;i<=w;i++) tim=max(tim,v[i][0].h);
query(tt+tim);
for(int i=1;i<=w;i++) s[v[i][0].p]=1;
tt+=tim+1;
for(int i=1;i<=w;i++) v[i].erase(v[i].begin());
}
query(1e9);
for(int i=1;i<=m;i++){
if(ans[i]) puts("Yes");
else puts("No");
}
return 0;
}