#include<cstdio>
#include<iostream>
#include<algorithm>
//#include<queue>
//#include<vector>
#include<bits/stdc++.h>
#define ll long long
#define ddd printf("-----------------------\n");
using namespace std;
const int maxn=2e4+10 ;
map<string , int> cp;//
int head[maxn],to[maxn<<1],nxt[maxn<<1],tot;
int dfn[maxn],low[maxn],dfstm,st[maxn],top,co[maxn],col;
int n,m;
void add(int u,int v){
to[++tot]=v,nxt[tot]=head[u],head[u]=tot;
}
void tarjan(int u)
{
low[u]=dfn[u]=++dfstm; st[++top]=u;
for(int i=head[u];i;i=nxt[i])
{
int v=to[i];
if(dfn[v]==0){
tarjan(v);
low[u]=min(low[u],low[v]);
}
else if(co[v]==0) low[u]=min(low[u],dfn[v]);
}
if(low[u]==dfn[u])
{
co[u]=++col;
while(st[top]!=u)
{
co[st[top]]=col;
top--;
}
top--;
}
}
int main()
{
ios::sync_with_stdio(false);
cin>>n;
for(int i=1;i<=n;i++){
string a,b;cin>>a>>b;
cp[a]=i,cp[b]=n+i;
add(cp[a],cp[b]);//add(cp[b],cp[a]);
}
cin>>m;
for(int i=1;i<=m;i++){
string a,b;cin>>a>>b;
add(cp[b],cp[a]);//
}
for(int i=1;i<=2*n;i++) if(dfn[i]==0) tarjan(i);
for(int i=1;i<=n;i++){
if(co[i]==co[i+n]) cout<<"Unsafe\n";
else cout<<"Safe\n";
}
return 0;
}
/*
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<map>
using namespace std;
#define N 10005
#define M 300005
int n,m;
map<string,int>cp; // couple
struct node {
int v,nex;
}e[M];
int tot,h[N];
void add(int u,int v) {
e[++tot].v=v;
e[tot].nex=h[u];
h[u]=tot;
}
inline int read() {
int tmp=0;
char ch=getchar();
while(ch<'0'||ch>'9') ch=getchar();
while(ch>='0'&&ch<='9') tmp=(tmp<<1)+(tmp<<3)+ch-'0',ch=getchar();
return tmp;
}
bool ins[N];
int s[N],top;
int cnt,belong[N];
int dfn[N],low[N],idx;
void Tarjan(int u) {
dfn[u]=low[u]=++idx;
s[++top]=u;
ins[u]=1;
for(int i=h[u];i;i=e[i].nex) {
int v=e[i].v;
if(!dfn[v]) {
Tarjan(v);
low[u]=min(low[u],low[v]);
}
else if(ins[v]) low[u]=min(low[u],dfn[v]);
}
if(low[u]==dfn[u]) {
++cnt;
do{
belong[s[top]]=cnt;
ins[s[top]]=0;
}while(s[top--]!=u);
}
}
int main()
{
n=read();
string gir,boy;
for(int i=1;i<=n;++i) {
cin>>gir>>boy;
cp[gir]=i;
cp[boy]=i+n;
add(i,i+n);
}
m=read();
for(int i=1;i<=m;++i) {
cin>>gir>>boy;
add(cp[boy],cp[gir]);
}
for(int i=1;i<=n*2;++i) if(!dfn[i]) Tarjan(i);
for(int i=1;i<=n;++i) {
if(belong[i]==belong[i+n]) printf("Unsafe\n");
else printf("Safe\n");
}
return 0;
}
*/