#include using namespace std; typedef long long ll; int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); int n; ll k; cin >> n >> k; vector r(n); vector x(n); for (int i=0; i> r[i] >> x[i]; } vector tmp_x = x; vector tmp_v(n); vector tmp_rx(n+1); vector tmp_rv(n+1); for (int st=0; st=0; i--){ tmp_rx[i] = tmp_rx[r[i]] + tmp_x[i]; tmp_rv[i] = tmp_rv[r[i]] + tmp_v[i]; ll tar_x = tmp_rx[i] - tmp_rx[i+1]; ll tar_v = tmp_rv[i] - tmp_rv[i+1]; if (tar_v == 0){ if (!(0 <= tar_x && tar_x <= k)){ mode = 0; } }else if(tar_v == 1){ m_lb = max(m_lb, -tar_x); m_ub = min(m_ub, k-tar_x); }else{ m_lb = max(m_lb, tar_x-k); m_ub = min(m_ub, tar_x); } } if (!(m_lb <= m_ub)){ mode = 0; } if (mode){ cout << "Yes\n"; }else{ cout << "No\n"; } tmp_x[st] = x[st]; tmp_v[st] = 0; } }