n, k = map(int, input().split())
a = list(map(int, input().split()))
b = list(map(int, input().split()))

if n == 1:
    print(0)
else:
    max_time = 0
    t_prev_prev = 0  # T1
    t_prev = a[0] + b[1]  # T2
    max_time = max(t_prev_prev, t_prev)
    
    for j in range(3, n + 1):
        idx_j = j - 1  # 0-based index for b
        # candidate1 is T_{j-1} + A_{j-1} + B_j
        candidate1 = t_prev + a[j-2] + b[idx_j]
        # candidate2 is T_{j-2} + A_{j-2} + B_j + K
        candidate2 = t_prev_prev + a[j-3] + b[idx_j] + k
        current = min(candidate1, candidate2)
        max_time = max(max_time, current)
        # update prev_prev and prev
        t_prev_prev, t_prev = t_prev, current
    
    print(max_time)