#pragma GCC optimize("O3")
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#pragma GCC target("avx,avx2")
#include <bits/stdc++.h>
#define INF 1000000001LL
#define LNF 1000000000000000001LL
#define MOD 998244353LL
#define MAX 2001
#define long long long
#define all(x) x.begin(),x.end()
using namespace std;

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

    long n,h;
    cin >> n >> h;
    vector<int> brr(n);

    for(int i = 0; i<n; i++)
        cin >> brr[i];
    vector<long> arr(n);
    vector<long> hap(n+1);
    for(int i = 0; i<n; i++)
    {
        cin >> arr[i];
        hap[i+1] = hap[i]+arr[i];
    }

    long res = 0;

    long right = 0;
    long cur = 0;
    long sum = 0;
    for(int i = 0; i<n; i++)
    {
        while(cur<=h && right <= n)
        {
            res = max(res,sum);
            if(right == n)
                break;
            cur+=(right-i+1)*arr[right];
            sum+=brr[right];
            right++;
        }
        cur-=hap[right]-hap[i];
        sum-=brr[i];
    }
    cout << res << endl;
    return 0;
}