#include <bits/stdc++.h>
using namespace std;
using i64 = long long;
int first_ge(const vector<int>& a, int x) {
int l = 0, r = (int)a.size();
while (l < r) {
int m = l + (r - l) / 2;
if (a[m] < x) l = m + 1;
else r = m;
}
return l;
}
void solve() {
int n, q;
cin >> n >> q;
vector<i64> pref(n + 1);
for (int i = 1; i <= n; ++i) {
i64 x; cin >> x;
pref[i] = pref[i - 1] + x;
}
while (q--) {
int l, r; cin >> l >> r;
cout << pref[r] - pref[l - 1] << '\n';
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
solve();
}
#include <bits/stdc++.h>
using namespace std;
using i64 = long long;
int first_ge(const vector<int>& a, int x) {
int l = 0, r = (int)a.size();
while (l < r) {
int m = l + (r - l) / 2;
if (a[m] < x) l = m + 1;
else r = m;
}
return l;
}
void solve() {
int n, q;
cin >> n >> q;
vector<i64> pref(n + 1);
for (int i = 1; i <= n; ++i) {
i64 x; cin >> x;
pref[i] = pref[i - 1] + x;
}
while (q--) {
int l, r; cin >> l >> r;
cout << pref[r] - pref[l - 1] << '\n';
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
solve();
}
vector<int> bfs(const vector<vector<int>>& g, int s) {
vector<int> d(g.size(), -1);
queue<int> q;
d[s] = 0;
q.push(s);
while (!q.empty()) {
int v = q.front();
q.pop();
for (int u : g[v]) {
if (d[u] != -1) continue;
d[u] = d[v] + 1;
q.push(u);
}
}
return d;
}
i64 power(i64 a, i64 b, i64 mod) {
i64 ans = 1;
while (b > 0) {
if (b & 1) ans = ans * a % mod;
a = a * a % mod;
b >>= 1;
}
return ans;
}
vector<int> a(n);
for (auto& x : a) cin >> x;
sort(a.begin(), a.end());
a.erase(unique(a.begin(), a.end()), a.end());
vector<int> bfs(const vector<vector<int>>& g, int s) {
vector<int> d(g.size(), -1);
queue<int> q;
d[s] = 0;
q.push(s);
while (!q.empty()) {
int v = q.front();
q.pop();
for (int u : g[v]) {
if (d[u] != -1) continue;
d[u] = d[v] + 1;
q.push(u);
}
}
return d;
}
i64 power(i64 a, i64 b, i64 mod) {
i64 ans = 1;
while (b > 0) {
if (b & 1) ans = ans * a % mod;
a = a * a % mod;
b >>= 1;
}
return ans;
}
vector<int> a(n);
for (auto& x : a) cin >> x;
sort(a.begin(), a.end());
a.erase(unique(a.begin(), a.end()), a.end());
struct Fenwick {
int n;
vector<i64> bit;
explicit Fenwick(int size) : n(size), bit(size + 1) {}
void add(int p, i64 delta) {
for (++p; p <= n; p += p & -p)
bit[p] += delta;
}
i64 sum(int count) const {
i64 ans = 0;
for (int p = count; p > 0; p -= p & -p)
ans += bit[p];
return ans;
}
};
int lis(const vector<int>& a) {
vector<int> tail;
for (int x : a) {
auto it = lower_bound(tail.begin(), tail.end(), x);
if (it == tail.end()) tail.push_back(x);
else *it = x;
}
return (int)tail.size();
}
constexpr int INF = 1'000'000'007;
vector<pair<int, int>> edges;
for (auto [u, v] : edges) {
g[u].push_back(v);
g[v].push_back(u);
}
struct Fenwick {
int n;
vector<i64> bit;
explicit Fenwick(int size) : n(size), bit(size + 1) {}
void add(int p, i64 delta) {
for (++p; p <= n; p += p & -p)
bit[p] += delta;
}
i64 sum(int count) const {
i64 ans = 0;
for (int p = count; p > 0; p -= p & -p)
ans += bit[p];
return ans;
}
};
int lis(const vector<int>& a) {
vector<int> tail;
for (int x : a) {
auto it = lower_bound(tail.begin(), tail.end(), x);
if (it == tail.end()) tail.push_back(x);
else *it = x;
}
return (int)tail.size();
}
constexpr int INF = 1'000'000'007;
vector<pair<int, int>> edges;
for (auto [u, v] : edges) {
g[u].push_back(v);
g[v].push_back(u);
}