N,X=map(int, input().split()) D=[[] for i in range(N)] A=list(map(int, input().split())) B=[] for i in range(1,N): p=A[i-1] c,s=map(int, input().split()) D[p-1].append(i) B.append((p-1,c,s)) C=[] from collections import deque d=deque() d.append(0) while d: now=d.popleft() for nex in D[now]: C.append(nex) d.append(nex) dp=[{} for i in range(N)] for i in range(N): dp[i][0]=0 for i in range(N-1): a,b,c=B[i] if c not in dp[i+1]: dp[i+1][c]=b for now in C[::-1]: p,_,_=B[now-1] E={} for d in dp[now]: for dd in dp[p]: if dd==0 and p!=0: continue c=d+dd;cc=dp[now][d]+dp[p][dd] if c not in E: E[c]=10**15 E[c]=min(E[c],cc) E[0]=0 dp[p]=E ans=10**15 for d in dp[0]: if d>=X: ans=min(ans,dp[0][d]) print(ans)