#include using namespace std; int main(){ int N,X; cin >> N >> X; vector> G(N); for(int i=1;i> p; G[p-1].emplace_back(i); } vector c(N,0LL); vector s(N,0); for(int i=1;i> c[i] >> s[i]; function(int)> dfs=[&](int v){ vector res(s[v]+1,1000000000000000000LL); res[s[v]]=c[v]; for(int nv : G[v]){ vector res2=dfs(nv); vector res3((int)(res.size())+(int)(res2.size())-1,1000000000000000000LL); for(int i=0;i<(int)(res.size());i++) for(int j=0;j<(int)(res2.size());j++) res3[i+j]=min(res3[i+j],res[i]+res2[j]); swap(res,res3); } res[0]=0; return res; }; vector dp=dfs(0); long long ans=1000000000000000000LL; for(int i=X;i<(int)(dp.size());i++) ans=min(ans,dp[i]); cout << ans << '\n'; }