#include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int N; long long K; cin >> N >> K; vector A(N), B(N); for (long long& x : A) cin >> x; for (long long& x : B) cin >> x; // T_1 = 0 long long answer = 0; if (N == 1) { cout << 0 << '\n'; return 0; } // 0-indexed: // prev2 = T_1, prev1 = T_2 long long prev2 = 0; long long prev1 = A[0] + B[1]; answer = max(answer, prev1); for (int i = 2; i < N; ++i) { // 社員 i+1 が社員 i の声を聞く時刻 long long by_previous = prev1 + A[i - 1] + B[i]; // 社員 i-1 の声を聞いてから K 秒後 long long by_timeout = prev2 + A[i - 2] + B[i] + K; long long current = min(by_previous, by_timeout); // 「全員」が発声するまでなので全 T_i の最大を取る answer = max(answer, current); prev2 = prev1; prev1 = current; } cout << answer << '\n'; return 0; }