#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];

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];
     for(int i=1;i<=n;i++)cin>>d[i];

     long long sol=-1;
     for(int i=1;i<=n;i++)
     {
         int v=i;
         long long lep=a[v];
         long long tme=0LL;
         while(true)
         {
             if(v==i)
             {
                 long long brr=t/tme;
                 tme*=brr;
                 lep*=brr;
             }
             if(d[v]+tme<=t)
             {
                tme+=d[v];
                v=p[v];
                lep+=a[v];
             }
             else break;
         }
         if(lep>sol)sol=lep;
     }



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