#include #include #include #include "deque" #include #include using namespace std; int n; vector SA(vectorarr){ vectorret; for(int k = 1; k <= n; k++){ dequedq(k); for(int j = 0; j < k; j++){ while((!dq.empty()) && arr[j] >= arr[dq.back()]) dq.pop_back(); dq.push_back(j); } for(int i = k; i < n; i++){ ret.push_back(arr[dq.front()]); while((!dq.empty()) && arr[i] >= arr[dq.back()]) dq.pop_back(); while((!dq.empty()) && dq.front() <= i-k) dq.pop_front(); dq.push_back(i); } ret.push_back(arr[dq.front()]); } return ret; } int tb[23][8002005]; int sv[8002005]; const int mod = 1e9 + 7; int qry(int l, int r){ int k = sv[r-l+1]; return max(tb[k][l], tb[k][r-1-(1<> n; vectora(n); for(int i = 0; i < n; i++) cin >> a[i]; a = SA(a); n = n * (n + 1) / 2; for(int i = 0; i < n; i++){ tb[0][i] = a[i]; } for(int i = 0; (1<