#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N=100050;
const int L=42;
int par[N][L];
ll dst[N][L],val[N][L],c[N];
int main()
{
	int n,i,j;ll t;
	scanf("%i %lld",&n,&t);
	for(i=1;i<=n;i++) scanf("%lld",&c[i]);
	for(i=1;i<=n;i++) scanf("%lld",&par[i][0]);
	for(i=1;i<=n;i++) scanf("%lld",&dst[i][0]);
	for(i=1;i<=n;i++) val[i][0]=c[par[i][0]];
	for(j=1;j<L;j++)
	{
		for(i=1;i<=n;i++)
		{
			par[i][j]=par[par[i][j-1]][j-1];
			val[i][j]=val[i][j-1]+val[par[i][j-1]][j-1];
			dst[i][j]=dst[i][j-1]+dst[par[i][j-1]][j-1];
		}
	}
	ll ans=0;
	for(i=1;i<=n;i++)
	{
		ll sum=c[i],d=0;
		int u=i;
		for(j=L-1;~j;j--)
		{
			if(d+dst[u][j]<=t)
			{
				sum+=val[u][j];
				d+=dst[u][j];
				u=par[u][j];
			}
		}
		ans=max(ans,sum);
	}
	printf("%lld\n",ans);
	return 0;
}