#include #include #include using mint = atcoder::modint998244353; int main() { int n, q; std::cin >> n >> q; std::vector a(n); for (auto &&e : a) std::cin >> e; std::vector inc_sum(n); for (int i = 0; i < n - 1; ++i) { inc_sum[i + 1] = inc_sum[i] + (a[i] < a[i + 1]); } std::vector a_sum(n + 1); for (int i = n - 1; i >= 0; --i) { a_sum[i] = 2 * a_sum[i + 1] + a[i]; } std::vector pow_2(n + 1); pow_2[0] = 1; for (int i = 1; i <= n; ++i) { pow_2[i] = pow_2[i - 1] + pow_2[i - 1]; } for (int qid = 0; qid < q; ++qid) { int l, r; std::cin >> l >> r; --l, --r; int ng = l - 1, ok = r; while (ok - ng > 1) { int mid = (ok + ng) >> 1; (inc_sum[r] - inc_sum[mid] == r - mid ? ok : ng) = mid; } std::cout << (a_sum[ok + 1] - a_sum[r + 1] * pow_2[r - ok] + a[ok]).val() << '\n'; } }