#include <bits/stdc++.h>
#define MAXN 100100

using namespace std;

int x[MAXN],d[MAXN],a[MAXN];
long long n,t,res,res1,ciklus,duzina;

void citaj(){
    cin>>n>>t;
    for(int i=1;i<=n;i++){
        scanf("%d",&a[i]);
    }
    for(int i=1;i<=n;i++){
        scanf("%d",&x[i]);
    }
    for(int i=1;i<=n;i++){
        scanf("%d",&d[i]);
    }
}

long long putdo(int c,int s){
    if(s<d[c])
        return a[c];
    return a[c]+(long long)putdo(x[c],s-d[c]);
}
void radi1(){
    for(int i=1;i<=n;i++){
        ciklus+=(long long)a[i];
    }
    for(int i=1;i<=n;i++){
        duzina+=(long long)d[i];
    }
    res=ciklus*(t/duzina);
    t=t%duzina;
    for(int i=1;i<n;i++){
        long long pom= putdo(i,t);
        if(pom>res1)
            res1=pom;
    }
    res+=res1;

}
void pisi(){
    cout<<res;
}
int main()
{
    citaj();
    radi1();
    pisi();
    return 0;
}
/*
5 7
7 3 1 4 8
4 3 5 2 1
3 2 4 1 7
*/