#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <vector>
#define MAX 10005
using namespace std;
int R, C, Q;
vector <int> l[MAX];
int vis[MAX];
int viu[MAX];
int pai[MAX];
bool paiponte[MAX];
int cnt;
void dfs(int x){
vis[x] = cnt++;
viu[x] = vis[x];
for (int i = 0; i < (int)l[x].size(); i++){
if(l[x][i] != pai[x]){
if(vis[l[x][i]] == -1){
pai[l[x][i]] = x;
dfs(l[x][i]);
viu[x] = min(viu[x], viu[l[x][i]]);
}
viu[x] = min(viu[x], vis[l[x][i]]);
}
}
for (int i = 0; i < (int)l[x].size(); i++){
if(l[x][i] != pai[x] && viu[l[x][i]] > vis[x])
paiponte[l[x][i]] = true;
}
}
void dfsp(int x){
vis[x] = cnt;
for (int i = 0; i < (int)l[x].size(); i++){
if(vis[l[x][i]] == -1 && ((pai[l[x][i]] == x && paiponte[l[x][i]]) || (pai[x] == l[x][i] && paiponte[x])) ){
dfsp(l[x][i]);
}
}
}
int main(){
while(scanf("%d%d%d", &R, &C, &Q) && R > 0){
for (int i = 0; i < R; i++){
pai[i] = vis[i] = viu[i] = -1;
paiponte[i] = false;
l[i].clear();
}
for (int i = 0; i < C; i++){
int x, y;
scanf("%d%d", &x, &y);
x--; y--;
l[x].push_back(y);
l[y].push_back(x);
}
for (int i = 0; i < R; i++)
if(vis[i] == -1){
cnt = 0;
dfs(i);
}
for (int i = 0; i < R; i++)
vis[i] = -1;
cnt = 0;
for (int i = 0; i < R; i++)
if (vis[i] == -1){
dfsp(i);
cnt++;
}
for (int i = 0; i < Q; i++){
int x, y;
scanf ("%d%d", &x, &y);
x--; y--;
if(vis[x] == vis[y])
printf("Y\n");
else
printf("N\n");
}
printf ("-\n");
}
return 0;
}