#include using namespace std; typedef long long ll; templatebool chmax(T &a, const T &b) { if (abool chmin(T &a, const T &b) { if (b>N>>K; vector R(N),X(N); for(int i=0;i>R[i]>>X[i]; for(ll ng=0;ng S(N+1); for(ll i=N-1;i>ng;i--){ S[i]=S[R[i]]+X[i]; ll diff=S[i]-S[i+1]; ok&=(0<=diff&&diff<=K); } if(!ok){ cout<<"No\n"; continue; } vector A=S,B=S,C=S; A[ng]=A[ng+1]+0; B[ng]=B[ng+1]+1; C[ng]=C[ng+1]+2; ll left=0,right=K; for(ll i=ng-1;i>=0;i--){ A[i]=A[R[i]]+X[i]; B[i]=B[R[i]]+X[i]; C[i]=C[R[i]]+X[i]; ll a=A[i]-A[i+1],b=B[i]-B[i+1],c=C[i]-C[i+1]; if(a==b&&b==c){ if(0<=a&&a<=K){ }else{ left=0; right=-1; break; } }else{ assert(abs(a-b)==1); if(a