#include <cstdlib>
#include <cstdio>
#define gr 100010
#define ll long long
ll ocena[gr];
int otac[gr];
ll duzina[gr];
int main()
{
    int n;
    ll t;
    scanf("%d%lld",&n,&t);
    for(int i=1;i<=n;++i)scanf("%lld",ocena+i);
    for(int i=1;i<=n;++i)scanf("%d",otac+i);
    for(int i=1;i<=n;++i)scanf("%lld",duzina+i);
    ll res=0;
    for(int i=1;i<=n;++i)
    {
        int c=i;
        ll ovr=t;
        ll ukoc=0;
        while(duzina[c]<=ovr)
        {
            ukoc+=ocena[c];
            ovr-=duzina[c];
            c=otac[c];
        }
        ukoc+=ocena[c];
        if(ukoc>res)res=ukoc;
    }
    printf("%lld\n",res);
    return 0;
}