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)