#include<iostream>
using namespace std;

int n,q,x,a,b;
bool m[10000][10000];
int partiq[100000];

bool ans[200000];
int ansi;

bool visited[100000];
bool possible;

void DFS(int from,int to)
{
   int i;
    
   visited[from]=true;
   for(i=1;i<=n;i++)
      if(visited[i]==false && partiq[from]==partiq[i])
      {
         visited[i]=true;
         if(i==to){possible=true;
                   return;}
         DFS(from,to);
      }
}

int main()
{
   int i,j;
    
   cin>>n;
   for(i=1;i<=n;i++)
   {
      cin>>q;q++;
      m[q][i]=m[i][q]=true;
   }
   
   cin>>q;
   for(i=0;i<q;i++)
   {
      cin>>x>>a>>b;
      if(x==1)partiq[a]=b;
      else
      {
         for(j=1;j<=n;j++)visited[j]=false;
         possible=false;
         DFS(a,b);
         
         if(possible==true)ans[ansi]=true;
         ansi++;
      }
   }
    
   for(i=0;i<ansi;i++)
      if(ans[i]==true) cout<<"YES"<<endl;
      else             cout<<"NO"<<endl;
    
   return 0;
}

/*
3
-1 0 1
7
1 0 11
2 0 1
2 0 2
1 2 12
1 1 11
2 0 1
2 0 2





3
-1 0 1
7
1 0 11
2 0 1
2 0 2
1 2 11
1 1 11
2 0 1
2 0 2

*/