ll@n,@w[n],@m,@s[m]; rep(i,1,n)w[i]+=w[i-1]; rep(i,1,m)s[i]+=s[i-1]; map,ll>a,b; a[{0,0}]=0; a[{1,0}]=0; ll c=0,d=0; while(c?=y; }else if(x.first==1){ b[x]>?=y; b[{0,w[c]}]>?=y+(w[c]-x.second)**2; }else{ b[{0,w[c]}]>?=y; } } }else{ // 0 close for(auto[x,y]:a){ if(x.first==0){ if(d&1){ b[{-1,0}]>?=y+(w[c]-x.second)**2; }else{ b[{1,w[c]}]>?=y+(w[c]-x.second)**2; } }else{ b[x]>?=y; } } } c+=1; }else{ if(d&1){ // 1 open if(d+1?=y; }else if(x.first==0){ b[x]>?=y; b[{1,s[d]}]>?=y+(s[d]-x.second)**2; }else{ b[{1,s[d]}]>?=y; } } }else{ // 1 close for(auto[x,y]:a){ if(x.first==1){ if(c&1){ b[{-1,0}]>?=y+(s[d]-x.second)**2; }else{ b[{0,s[d]}]>?=y+(s[d]-x.second)**2; } }else{ b[x]>?=y; } } } d+=1; } a.swap(b); b.clear(); } ll z=0; for(auto[x,y]:a){ if(x.first>=0){ z>?=y+(w[n-1]-x.second)**2; }else{ z>?=y; } } wt(z);