#include #define N 300005 #define int long long #define Eps 1e-6 using namespace std; struct line{ int k,b; bool flag;int ls,rs; line(){ ls=rs=0; } int get(const int x)const{ return k*x+b; } double getIntersectionX(const line &x)const{ return (b-x.b)/1.0/(x.k-k); } }; struct LiChaoTree{ line Tree[N<<2]; int Root,Ncnt; inline void Add(int &id,int L,int R,line p){ if(!id){ id=++Ncnt; } if(!Tree[id].flag){ Tree[id].k=p.k;Tree[id].b=p.b; Tree[id].flag=1; }else if(p.get(L)>1; if(p.get(mid)Eps){ Add(Tree[id].ls,L,mid,p); }else{ Add(Tree[id].rs,mid+1,R,p); } } } inline int Query(int id,int L,int R,int val){ if(!id){ return 1e18; } if(!Tree[id].flag){ return 1e18; } if(L==R){ if(!Tree[id].flag){ return 1e18; } return Tree[id].get(val); }int mid=L+R>>1; int Ans=Tree[id].get(val); if(val<=mid){ return min(Ans,Query(Tree[id].ls,L,mid,val)); }else{ return min(Ans,Query(Tree[id].rs,mid+1,R,val)); } } }LCTree; int n,dp[N],x[N],y[N],a[N]; signed main(){ ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; } for(int i=1;i<=n;i++){ cin>>x[i]; } for(int i=1;i<=n;i++){ cin>>y[i]; } for(int i=1;i<=n;i++){ line p;p.b=dp[i-1]+y[i]*y[i]+x[i]*x[i];p.k=-2*x[i]; LCTree.Add(LCTree.Root,1,20000000,p); dp[i]=a[i]*a[i]+LCTree.Query(1,1,20000000,a[i]); }cout<