int@n,@p--[n-1]; char a[n]{}; rep(i,1,n){ char@s; if(s=='#'){ a[i]^=1; a[p[i-1]]^=1; } } unionFind uf('m',n,1); int@k; rep(k){ int@u--,@v--; uf(u,v); } rep(i,n){ int r=uf(i); if(r!=i){ a[r]^=a[i]; } } rep(i,n){ int r=uf(i); if(r==i){ if(a[r]){ wt("No"); exit(0); } } } wt("Yes");