#include #define FOREACH(it,c) for( __typeof((c).begin()) it=(c).begin();it!=(c).end();it++) #define FOR(a,b,c) for(int a=(b);a<=(c);++a) #define ROF(a,b,c) for(int a=(b);a>=(c);--a) #define dbg(x) cout<<#x<<" = "<<(x)<<"\n"; #define pii pair #define pll pair< ll, ll > #define pull pair< ull, ull > #define mp make_pair #define pb push_back #define fi first #define se second #define ll long long #define ull unsigned long long #define tata NULL using namespace std; const int NMAX = 100004; int a[NMAX],n, LOG[NMAX],dp[NMAX][18]; inline int Query(int X,int Y) { int d = Y-X+1; int log = LOG[d]; return max(dp[X][log],dp[X+d-(1<> n; FOR(i,1,n) cin >> a[i]; FOR(i,1,n) dp[i][0] = a[i]; FOR(i,2,n) LOG[i] = LOG[i>>1]+1; for(int j = 1;(1<