#include<iostream>
#include<vector>
using namespace std;
bool zaqvka[200000],used[100000];
long long n,q,i,j,k,a,b,x,g;
int p[100000];
vector<long>c[100000];

void dfs(int node)
{int i;
used[node]=1;
for(i=0;i<c[node].size();i++)
{if(used[c[node][i]]==0 && p[node]==p[c[node][i]] && p[node]!=0)
dfs(c[node][i]);
}
}

int main()
{cin>>n;
for(i=0;i<n;i++)
{cin>>x;
if(x==-1)continue;

c[i].push_back(x);
c[x].push_back(i);
}

cin>>q;
for(i=0;i<q;i++)
{cin>>x>>a>>b;
if(x==1)p[a]=b;
else 
{for(j=0;j<n;j++)
used[j]=0;
dfs(a);

if(used[b])zaqvka[g]++;
g++;
}
}
for(i=0;i<g;i++)
if(zaqvka[i])cout<<"YES"<<endl;
else cout<<"NO"<<endl;
return 0;
}


