import sys input = sys.stdin.readline INF = 3 << 59 def solve(): n, s = map(int, input().split()) x = list(map(int, input().split())) w = list(map(int, input().split())) # dp[n][n+1][2] # C++: vector dp(n, vector(n+1, array)) dp = [[[INF, INF] for _ in range(n + 1)] for __ in range(n)] # 累積和 sumw = [0] * (n + 1) for i in range(n): sumw[i + 1] = sumw[i] + w[i] # 初期化 total = sumw[n] for i in range(n): base = abs(x[i] - s) * total dp[i][i + 1][0] = base dp[i][i + 1][1] = base # DP 遷移 for l in range(n - 1, -1, -1): for r in range(l + 1, n + 1): val = total - sumw[r] + sumw[l] if r < n: v0 = dp[l][r][0] + val * abs(x[l] - x[r]) if v0 < dp[l][r + 1][1]: dp[l][r + 1][1] = v0 v1 = dp[l][r][1] + val * abs(x[r - 1] - x[r]) if v1 < dp[l][r + 1][1]: dp[l][r + 1][1] = v1 if l > 0: v0 = dp[l][r][0] + val * abs(x[l] - x[l - 1]) if v0 < dp[l - 1][r][0]: dp[l - 1][r][0] = v0 v1 = dp[l][r][1] + val * abs(x[r - 1] - x[l - 1]) if v1 < dp[l - 1][r][0]: dp[l - 1][r][0] = v1 print(min(dp[0][n][0], dp[0][n][1])) if __name__ == "__main__": solve()