N, K = gets.split.map(&:to_i) A = gets.split.map(&:to_i) B = gets.split.map(&:to_i) dp = Array.new(N, Float::INFINITY) dp[0] = 0 1.upto(N - 1) do |i| if i == 1 dp[i] = A[i - 1] + B[i] else v1 = dp[i - 1] + A[i - 1] + B[i] v2 = dp[i - 2] + A[i - 2] + B[i] + K dp[i] = v1 dp[i] = v2 if dp[i] > v2 end end puts dp[N - 1]