#include <bits/stdc++.h>

using namespace std;

pair<int,int> niz[500005];
int pov[500005];
pair<int,int> red[500005];


int main ()
{
    int n, t;
    cin >> n >> t;
    for(int i=0;i<n;i++)
    {
        cin >> niz[i].first;
    }
    for(int i=0;i<n;i++)
    {
        int pp;
        cin >> pp;
        pov[pp-1]=i;
    }
    for(int i=0;i<n;i++)
    {
        cin >> niz[i].second;
    }
    int br=0;
    int k=0;
    for(int i=0;i<n;i++)
    {
        red[br++] = niz[k];
        k = pov[k];
    }
    int maxi=0;
    for(int i=0;i<n;i++)
    {
        int s=red[i].first;
        int tt=0;
        int j=(i+1)%n;

        while(tt < t)
        {
            tt+=red[j].second;
            if(tt > t) break;
            s+=red[j].first;

            j=(j+1)%n;

        }
        if(s > maxi)
        {
            maxi = s;
        }
    }
    cout << maxi << endl;
}