#include using namespace std; int main(){ int n,m; cin >> n; set> w; for(int i=0,sum_w=0,W;i> W; if(i%2==0 && W) w.emplace(sum_w,sum_w+W); sum_w+=W; } cin >> m; set> s; for(int i=0,sum_s=0,S;i> S; if(i%2==0 && S) s.emplace(sum_s,sum_s+S); sum_s+=S; } for(pair p : w){ if(s.contains(p)) s.erase(p); for(auto q=s.lower_bound(p);q!=s.end() && q->second p : s){ for(auto q=w.lower_bound(p);q!=w.end() && q->second dp=make_pair(0,0); for(auto p=w.begin(),q=s.begin();p!=w.end() || q!=s.end();){ if(p==w.end() || (q!=s.end() && q->second<=p->first)){ long long len=q->second-q->first; ans+=max(dp.first+len*len,dp.second+(len-mem)*(len-mem)); dp=make_pair(0,0); q=next(q); mem=0; } else if(q==s.end() || (p!=w.end() && p->second<=q->first)){ long long len=p->second-p->first; ans+=max(dp.first+len*len,dp.second+(len-mem)*(len-mem)); dp=make_pair(0,0); p=next(p); mem=0; } else if(*p<*q){ long long len=p->second-q->first,len_p=p->second-p->first; dp=make_pair(max(dp.first+(len_p-len)*(len_p-len),dp.second+(len_p-mem-len)*(len_p-mem-len)),max(dp.first+len_p*len_p,dp.second+(len_p-mem)*(len_p-mem))); p=next(p); mem=len; } else{ long long len=q->second-p->first,len_q=q->second-q->first; dp=make_pair(max(dp.first+(len_q-len)*(len_q-len),dp.second+(len_q-mem-len)*(len_q-mem-len)),max(dp.first+len_q*len_q,dp.second+(len_q-mem)*(len_q-mem))); q=next(q); mem=len; } } cout << ans << '\n'; }