#include <iostream>
using namespace std;
using ll = long long;
const int N = 1000100;
ll a[N], b[N];
int main() {
    int n, q, i, l, r;
    cin >> n >> q;
    for (i = 1; i <= n; ++i)
        cin >> a[i];
    for (i = 1; i <= n; ++i)
        b[i] = b[i - 1] + a[i];
    while (q--) {
        cin >> l >> r;
        cout << b[r] - b[l - 1] << '\n';
    }
    return 0;
}
// 64 位输出请用 printf("%lld")

以普遍理性而论,前缀和就是这样的,刚学的时候有人叫维护一个啥啥,然后才学的维护前缀和,算是一个小技巧吧,有时用在dp前处理数据