#include<bits/stdc++.h>

using namespace std;

pair<pair<int,int>,pair<int,int> > niz[100000];

long long bfs(int cvor,int v)
{
    if(v < 0 )
        return 0;
    //cout << niz[cvor].second.first << " " << niz[cvor].second.second << " " << v-niz[cvor].second.second <<endl;
    return niz[cvor].second.first + bfs(niz[cvor].first.second,v-niz[cvor].second.second);
}

int main()
{
    long long n,t;
    cin >> n >> t;
    for(int i = 0;i < n;i++)
    {
        int a;
        cin >> a;
        niz[i] = {{i,0},{a,0}};
    }
    for(int i = 0;i < n;i++)
    {
        int a;
        cin >> a;
        niz[i].first.second = a;
    }

    for(int i = 0;i < n;i++)
    {
        int a;
        cin >> a;
        niz[i].second.second = a;
    }
    int ma = -1;
    for(int i = 0;i < n;i++)
    {
        int a = bfs(i,t);
        //cout << a << endl;
        if(a > ma)
            ma = a;
    }
    cout << ma;
}
/*
5 7
7 3 1 4 8
4 3 5 2 1
3 2 4 1 7
*/