#include<bits/stdc++.h>
#define maxn 1005
using namespace std;

int n;
long long t;
int p[maxn];
long long a[maxn];
long long d[maxn];
vector<int>in[maxn];

stack<int>ms;
int out[maxn];
int bio[maxn];

int main()
{
     ios_base::sync_with_stdio(false);
     cin.tie(nullptr);
     cout.tie(nullptr);

     cin>>n>>t;
     for(int i=1;i<=n;i++)cin>>a[i];
     for(int i=1;i<=n;i++)
     {
         cin>>p[i];
         out[p[i]]++;
     }
     for(int i=1;i<=n;i++)
     {
         cin>>d[i];
         in[i].push_back(p[i]);
     }

     long long sol=-1;
     for(int i=1;i<=n;i++)
     {
         for(int j=1;j<=n;j++)bio[j]=0LL;

         int v=i;
         long long lep=0LL;
         long long tme=0LL;
         bool krug=false;
         while(true)
         {
             bio[v]++;
             lep+=a[v];

             if(d[v]+tme<=t)
             {
                 v=p[v];
                 tme+=d[v];
             }
             else break;
         }
         if(lep>sol)sol=lep;
     }


     cout<<sol<<endl;
     return 0;
}