#include<bits/stdc++.h>
using namespace std;
#define N 200020
int head[N],cnt,n,m,Q,dis[N],vis[N];
priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > > q;
struct Edge{int to,nxt;}edge[N<<1];
void add(int a,int b){cnt++;edge[cnt].to=b;edge[cnt].nxt=head[a];head[a]=cnt;}
int main(){
cin>>n>>m>>Q;
for(int i=1;i<=m;i++){cin>>u>>v;add(u,v+n),add(v+n,u),add(u+n,v),add(v,u+n);}
memset(dis,0x3f,sizeof(dis));
dis[1]=0;
q.push(make_pair(0,1));
while(!q.empty()){
int u=q.top().second;
q.pop();
if(vis[u])continue;
vis[u]=1;
for(int i=head[u];i;i=edge[i].nxt){
int v=edge[i].to;
if(dis[v]>dis[u]+1){dis[v]=dis[u]+1;q.push(make_pair(dis[v],v));}
}
}
while(Q--){
cin>>a>>L;
L&1?printf(dis[a+n]<=L?"Yes\n":"No\n"):printf(dis[a]<=L?"Yes\n":"No\n");
}
}