#include #include #include #include using namespace std; constexpr int maxniv = 18; class rmq{ int n; vector> d; public: rmq(const vector& v): n(v.size()), d(n){ for(int i = 0; i < n; ++i){ d[i][0] = v[i]; } for(int niv = 1, step = 1; niv < maxniv; ++niv, step *= 2){ for(int i = 0; i < n; ++i){ d[i][niv] = max(d[i][niv-1], d[min(i+step, n-1)][niv-1]); } } } int operator()(const int a, const int b){ const int dist = b-a+1, niv = log2(dist), step = 1<> n; vector v(n, 0); for(auto& x : v){ cin >> x; } rmq r(v); long long rez = v[0] + v[1]; for(int niv = 0; niv < maxniv; ++niv){ for(int i = 0, j = (2<