#include <iostream>
#include <algorithm>
#include <vector>


using namespace std;

vector <int> a;
vector <int> x;
vector <int> d;
int m[50000];


main ()

{
    int n;
    cin >> n;

    int64_t t;

    cin >> t;

   a.push_back (-1);

    for (int i=0; i<n; i++)
    {
        int k; cin >> k; a.push_back(k);
    }

 x.push_back (-1);

    for (int i=0; i<n; i++)

    {
        int k; cin >> k; x.push_back(k);
    }

 d.push_back (-1);

    for (int i=0; i<n; i++)
    {
        int k; cin >> k; d.push_back(k);
    }

    for (int i=1; i<=n; i++)
    {
        m[x[i]]=i;
    }


    int mx=0;


    for (int i=1; i<=n; i++)
    {

        int s=0;
        int e=t;

            int o= i;


            s=s+a[o];

            while (e>0)
            {


                if (d[m[o]]>e) break;

                e= e-d[m[o]];



                s=s+a[m[o]];

                o=m[o];

                if (d[m[o]]>e) break;


            }

            if (s>mx) mx=s;

    }

    cout << mx;
}