import sys input=sys.stdin.readline MI=lambda:map(int,input().split()) li=lambda:list(MI()) ii=lambda:int(input()) n=ii() a=li() x=li() y=li() from collections import deque INF=10**30 dp=[0]*n dq=deque() # 存 (j, dp[j-1]+y[j]+x[j]) 的单调队列 px=0 # 指向下一个还未加入 s1 的 j s1=INF # 存 min(dp[j-1]+y[j]-x[j]) over 已加入的 j for i in range(n): prev=0 if i==0 else dp[i-1] v2=prev+y[i]+x[i] # 插入 v2 到单调队列 while dq and dq[-1][1]>=v2: dq.pop() dq.append((i,v2)) # 将所有 x[j] ≤ a[i] 的 j 加入 s1 前缀最小值 while px<=i and x[px]<=a[i]: pj=px prevj=0 if pj==0 else dp[pj-1] v1=prevj+y[pj]-x[pj] if v1