#include <bits/stdc++.h>

using namespace std;
#define N_MAX 100000
int n,t;
int a[N_MAX];
int x[N_MAX];
int d[N_MAX];
int prelepo=0;

int v_max(int a,int b)
{
    return ((a>b)?a:b);
}

void atrakcija(int k,int p_vreme,int lepota)
{
    prelepo=v_max(prelepo,lepota+a[k]);
    if(p_vreme+d[k]<=t) atrakcija(x[k],p_vreme+d[k],lepota+a[k]);
}

int main()
{
    int i,j;
    ios::sync_with_stdio(false);
    cin.tie(0);
    cin>>n>>t;
    for(i=1;i<=n;i++) cin>>a[i];
    for(i=1;i<=n;i++) cin>>x[i];
    for(i=1;i<=n;i++) cin>>d[i];
    for(i=1;i<=n;i++) atrakcija(i,0,0);
    cout<<prelepo<<endl;
    return 0;
}