#include using namespace std; const int N=5e5+10; typedef long long ll; int n; ll sum[N],Sum[N],a[N],ans; struct point{ ll x,y; point(ll X=0,ll Y=0){x=X;y=Y;} point operator - (point a){return point(x-a.x,y-a.y);} ll operator * (point a){return x*a.y-y*a.x;} }p[N],q[N],Q[N],A[N]; int head,tail; ll calc(point p,point q){ return p.x*q.x+p.y+q.y; } bool cmp(point x,point y){return x.x>1; solve(l,mid); solve(mid+1,r); head=1;tail=0; for (int i=l;i<=mid;i++){ for (;tail>1&&(Q[tail]-Q[tail-1])*(p[i]-Q[tail])>0;tail--); Q[++tail]=p[i]; } for (int i=mid+1;i<=r;i++){ for (;head