#include using namespace std; #include #include using namespace __gnu_pbds; /*template using ordered_set = tree, rb_tree_tag, tree_order_statistics_node_update>; */typedef long long ll; typedef long double ld; typedef pair pl; typedef pair pii; #define LOCAL 0 #define dbg(x) cerr << #x << " is " << x << " " #define gll(x) scanf("%lld",&x) #define gll2(x,y) scanf("%lld%lld",&x,&y) #define gll3(x,y,z) scanf("%lld%lld%lld",&x,&y,&y) #define gllarr(arr,n) f(i,n) gll(arr[i]); #define sz(x) ((int)x.size()) #define s(x) sort(x.begin(),x.end()) #define all(v) v.begin(),v.end() #define rs(v) { s(v) ; r(v) ; } #define r(v) {reverse(all(v));} #define pb push_back #define mp make_pair #define F first #define S second #define f(i,n) for(int i=0;i=0;i--) #define rep(i,a,b) for(int i=a;i<=b;i++) #define repr(i,a,b) for(int i=a;i>=b;i--) const ll mod = 1000000007; const ll inf = (ll)1e18+1; const ld eps = 1e-12; const ll N = 50005; const ll LOGN = 19; const ld PI = 3.14159265358979323846; ll mul(ll a, ll b, ll m = mod) { return (ll)(a * b) % m;} ll add(ll a, ll b, ll m = mod) { a += b; if(a >= m) a -= m; if(a < 0) a += m; return a;} ll power(ll a, ll b, ll m = inf) { if(b == 0) return 1; if(b == 1) return (a % m); ll x = power(a, b / 2, m); x = mul(x, x, m); if(b % 2) x = mul(x, a, m); return x;} ll gcd(ll a, ll b) { if (a == 0) return b; return gcd(b%a, a); } ll maxi(ll p, ll q) { return (p>q)?p:q; } class node { public: ll sum; ll max; ll gcd; void init(int val) { sum=val; max=val; gcd=val; } void no_use() { sum=0; max=-(int)1e7; gcd=0; } void merge(node l, node r) { sum=l.sum+r.sum; //cout<<"HERE: "<=qs && end<=qe) { return segtree[nd]; } if(st>qe || end>n; f(i,n) { cin>>a[i]; } build(0,0,n-1); ll ans=-inf; f(i,n) { rep(j,i,n-1) { node p=query(0,0,n-1,i,j); //cout<