n,S=map(int,input().split()) e=[[] for i in range(n)] p=[0]+list(map(int,input().split())) for i in range(1,n): e[p[i]-1]+=[i] g=[(0,0)]+[tuple(map(int,input().split())) for i in range(1,n)] X=10**15 u=[0]*n v=[0]*n h=[[] for i in range(n)] q=[0] while len(q)>0: s=q[-1] if v[s]==0: v[s]=1 q+=e[s] else: u[s]=g[s][1] h[s]=[X]*(u[s]+1) h[s][g[s][1]]=g[s][0] for t in e[s]: nu=u[s]+u[t] nh=h[s]+[X]*u[t] for i in range(u[s]+1): for j in range(u[t]+1): nh[i+j]=min(nh[i+j],h[s][i]+h[t][j]) h[s]=nh[:] u[s]=nu v[s]=0 q.pop() print(min(h[0][S:]))