#include <bits/stdc++.h>
using namespace std;
int n, m, q, x, y, ji[100005], ou[100005];
vector<int> gx[100005];
struct node
{
int k, level;
}camp;
void bfs()
{
memset(ou, 127, sizeof(ou));
memset(ji, 127, sizeof(ji));
queue<node> q;
for (int i = 0; i < gx[1].size(); ++i)
{
camp.k = gx[1][i];
camp.level = 1;
ji[gx[1][i]] = 1;
q.push(camp);
}
while (!q.empty())
{
int k = q.front().k;
int level = q.front().level;
for (int i = 0; i < gx[k].size(); ++i)
if (level % 2 == 1)
if (level + 1 < ou[gx[k][i]])
{
camp.k = k;
camp.level = level;
ou[gx[k][i]] = level + 1;
q.push(camp);
}
else
if (level + 1 < ji[gx[k][i]])
{
camp.k = k;
camp.level = level;
ji[gx[k][i]] = level + 1;
q.push(camp);
}
q.pop();
}
return;
}
int main()
{
cin >> n >> m >> q;
for (int i = 1; i <= m; ++i)
{
cin >> x >> y;
gx[x].push_back(y);
gx[y].push_back(x);
}
bfs();
int k, level;
for (int i = 1; i <= q; ++i)
{
cin >> k >> level;
if (level % 2 == 1)
if (ji[k] <= level)
cout << "Yes" << '\n';
else
cout << "No" << '\n';
else
if (ou[k] <= level)
cout << "Yes" << '\n';
else
cout << "No" << '\n';
}
return 0;
}