from bisect import bisect_right from collections import deque N,S = map(int,input().split()) X = [0]+list(map(int,input().split())) W = [0]+list(map(int,input().split())) ind = bisect_right(X,S) X = X[:ind]+[S]+X[ind:] W = W[:ind]+[0]+W[ind:] INFTY = 2*10**15 dp = [[[INFTY for _ in range(2)] for _ in range(N+2)] for _ in range(N+2)] dp[ind][ind][0] = 0 dp[ind][ind][1] = 0 l = ind r = ind A = [0]*(N+2) for i in range(1,N+2): A[i] = A[i-1]+W[i] que = deque([(l,r)]) visited = set() visited.add((l,r)) while que: l, r = que.popleft() if l==1 and r==N+1:continue if l>1: dp[l-1][r][0] = min(dp[l-1][r][0],dp[l][r][0]+(A[N+1]-(A[r]-A[l-1]))*(X[l]-X[l-1]),dp[l][r][1]+(A[N+1]-(A[r]-A[l-1]))*(X[r]-X[l-1])) dp[l-1][r][1] = min(dp[l-1][r][1],dp[l][r][0]+(A[N+1]-(A[r]-A[l-1]))*(X[l]-X[l-1])+(A[N+1]-(A[r]-A[l-1])-W[l-1])*(X[r]-X[l-1]),dp[l][r][1]+(A[N+1]-(A[r]-A[l-1]))*(X[r]-X[l-1])+(A[N+1]-(A[r]-A[l-1])-W[l-1])*(X[r]-X[l-1])) if (l-1, r) not in visited: visited.add((l-1, r)) que.append((l-1,r)) if r