#include <iostream>
#include <bits/stdc++.h>
#define For(a,b,c) for(int a=b;a<=c;a++)
#define ll long long
#define fi first
#define se second
using namespace std;
const int MAX=1e5+5,INF=1e18+7;

int n,a[MAX],x[MAX],d[MAX];
pair<int,int> in[MAX];
ll t,k,sum=0,rez=0;
//vector<pair<int,int> > in[MAX];

int main()
{
    cin>>n>>t;
    if (n<=1000 && t<=1000)
    {
      For(i,1,n)
    {
        scanf("%i",&a[i]);
    }
    For(i,1,n)
    {
        scanf("%i",&x[i]);
    }
    For(i,1,n)
    {
        scanf("%i",&d[i]);
    }
    For(i,1,n)
    {
        in[i].fi=x[i];
        in[i].se=d[i];
    }
    int poc;
    For(i,1,n)
    {
        poc=i;
        k=t;
        sum=0;
        while (k>=in[poc].se)
        {
                sum+=a[poc];
                k-=in[poc].se;
                poc=in[poc].fi;

        }
        sum+=a[poc];
        rez=max(rez,sum);
       // cout<<sum<<endl;
    }
    }

    cout<<rez;
    return 0;
}