#include <stdio.h>
int N, Q;
int x[400001][3];
int pa[200001], gr[200001], ans[200001];
int main()
{
scanf("%d %d", &N, &Q);
for(int i = 2; i <= N; i++){
scanf("%d", &pa[i]);
}
pa[1] = 0;
for(int i = 0; i < N + Q - 1; i++){
scanf("%d", &x[i][0]);
if(x[i][0] == 1)
scanf("%d %d", &x[i][1], &x[i][2]);
else
scanf("%d", &x[i][1]);
}
for(int i = 1; i < N; i++){
gr[i] = i;
}
int tmp = Q;
for(int i = N + Q - 2; i >= 0; i--){
if(x[i][0] == 0){
gr[x[i][1]] = gr[pa[x[i][1]]];
}
else if(x[i][0] == 1){
if(gr[x[i][1]] == gr[x[i][2]]) ans[tmp] = 1;
else ans[tmp] = 0;
tmp--;
}
}
for(tmp = 1; tmp <= Q; tmp++){
if(ans[tmp]) printf("YES\n");
else printf("NO\n");
}
return 0;
}
ÀÌ ÄÚµå´Â 2Á¡¹Û¿¡ ¾È ³ª¿À´õ¶ó°í¿ä. ¿¹Á¦¸¦ Çغ¸´Ï ´Ù ¸Â°í, ¼±»ý´ÔÀÌ Ç®ÀÌÇØÁֽŠ°Í°ú ºñ½ÁÇÏ°Ô Â§ °ÍÀε¥, ¾îµð°¡ Ʋ·ÈÀ»±î¿ä?