#include <bits/stdc++.h>

using namespace std;


map<pair<int, int>, int> mapa;
int poc[1010];
int lepota[1010];
int duz[1010];
vector<int> graf[1010];
int dp[1010][1010];

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    int n, t;
    cin >> n >> t;
    for(int i = 1; i <= n; i++)
        cin >> lepota[i];
    for(int i = 1; i <= n; i++)
    {
        cin >> poc[i];
        graf[i].push_back(poc[i]);
    }
    for(int i = 1; i <= n; i++)
    {
        cin >> duz[i];
        mapa[make_pair(poc[i], i)] = duz[i];
    }

    for(int i = 1; i <= n; i++) dp[0][i] = lepota[i];

    for(int dan = 1; dan <= t; dan++)
    {
        for(int i = 1; i <= n; i++)
        {
            dp[dan][i] = dp[dan-1][i];
            for(int j = 0; j < graf[i].size(); j++)
            {
                int prosli = graf[i][j];
                int rast = mapa[make_pair(prosli, i)];
                if(rast <= dan)
                {
                    dp[dan][i] = max(dp[dan][i], dp[dan-rast][prosli] + lepota[i]);
                }
            }
        }
    }
    int maxi = 0;
    for(int i = 1; i <= n; i++) maxi = max(maxi, dp[t][i]);
    cout << maxi;






    return 0;
}