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=[0] 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 now in C[::-1]: E={} E[0]=0 for nex in D[now]: EE={} dp[nex][0]=0 for ee in dp[nex]: for e in E: s=e+ee if s not in EE: EE[s]=10**15 EE[s]=min(EE[s],E[e]+dp[nex][ee]) E=EE a,b,c=B[now-1] if now!=0: for e in E: dp[now][e+c]=b+E[e] dp[now][0]=0 else: dp[0]=E ans=10**15 for d in dp[0]: if d>=X: ans=min(ans,dp[0][d]) print(ans)