#include<bits/stdc++.h>
using namespace std;
#define int long long
#define FOR(i, a, b) for (int i = (a), _b = (b); i <= _b; i++)
#define FORD(i, a, b) for (int i = (a), _b = (b); i >= _b; i--)
template<typename X, typename Y> bool chmax(X& a, const Y& b) { return a < b ? a = b, 1 : 0; }
template<typename X, typename Y> bool chmin(X& a, const Y& b) { return a > b ? a = b, 1 : 0; }
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
int Rand(int l, int r) { return uniform_int_distribution<int>(l, r)(rng); }
constexpr int MAXN = 5005;
constexpr int MAXQ = 1e5 + 5;
constexpr int MAXA = 2e6;
constexpr int inf = 1e9 + 67;
constexpr int INF = 1e18 + 67;
int N, Q, A[MAXN];
short freq[2 * MAXA + 5], cnt[MAXN][MAXN];
int dp[MAXN][MAXN];
void solve() {
cin >> N >> Q;
FOR(i, 1, N) cin >> A[i];
FOR(l, 1, N) {
FOR(r, l + 1, N) {
int T = -(A[l] + A[r]) + MAXA;
if (T >= 0 && T <= 2 * MAXA) cnt[l][r] = freq[T];
freq[A[r] + MAXA]++;
}
FOR(r, l + 1, N) freq[A[r] + MAXA]--;
}
FOR(len, 3, N) FOR(l, 1, N - len + 1) {
int r = l + len - 1;
dp[l][r] = dp[l + 1][r] + dp[l][r - 1] - dp[l + 1][r - 1] + cnt[l][r];
}
FOR(i, 1, Q) {
int l, r; cin >> l >> r;
cout << dp[l][r] << "\n";
}
}
int32_t main() {
ios_base::sync_with_stdio(false); cin.tie(NULL);
#define TASK "blizzing_"
if (fopen(TASK".INP", "r")) {
freopen(TASK".INP", "r", stdin);
freopen(TASK".OUT", "w", stdout);
}
int tests = 1; // cin >> tests;
while (tests--) solve();
#ifdef LOCAL
cerr << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n";
#endif
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgaW50IGxvbmcgbG9uZwojZGVmaW5lIEZPUihpLCBhLCBiKSBmb3IgKGludCBpID0gKGEpLCBfYiA9IChiKTsgaSA8PSBfYjsgaSsrKQojZGVmaW5lIEZPUkQoaSwgYSwgYikgZm9yIChpbnQgaSA9IChhKSwgX2IgPSAoYik7IGkgPj0gX2I7IGktLSkKCnRlbXBsYXRlPHR5cGVuYW1lIFgsIHR5cGVuYW1lIFk+IGJvb2wgY2htYXgoWCYgYSwgY29uc3QgWSYgYikgeyByZXR1cm4gYSA8IGIgPyBhID0gYiwgMSA6IDA7IH0KdGVtcGxhdGU8dHlwZW5hbWUgWCwgdHlwZW5hbWUgWT4gYm9vbCBjaG1pbihYJiBhLCBjb25zdCBZJiBiKSB7IHJldHVybiBhID4gYiA/IGEgPSBiLCAxIDogMDsgfQoKbXQxOTkzN182NCBybmcoY2hyb25vOjpzdGVhZHlfY2xvY2s6Om5vdygpLnRpbWVfc2luY2VfZXBvY2goKS5jb3VudCgpKTsKaW50IFJhbmQoaW50IGwsIGludCByKSB7IHJldHVybiB1bmlmb3JtX2ludF9kaXN0cmlidXRpb248aW50PihsLCByKShybmcpOyB9Cgpjb25zdGV4cHIgaW50IE1BWE4gPSA1MDA1Owpjb25zdGV4cHIgaW50IE1BWFEgPSAxZTUgKyA1Owpjb25zdGV4cHIgaW50IE1BWEEgPSAyZTY7CmNvbnN0ZXhwciBpbnQgaW5mID0gMWU5ICsgNjc7CmNvbnN0ZXhwciBpbnQgSU5GID0gMWUxOCArIDY3OwoKaW50IE4sIFEsIEFbTUFYTl07CnNob3J0IGZyZXFbMiAqIE1BWEEgKyA1XSwgY250W01BWE5dW01BWE5dOyAKaW50IGRwW01BWE5dW01BWE5dOwoKdm9pZCBzb2x2ZSgpIHsKICAgIGNpbiA+PiBOID4+IFE7CiAgICBGT1IoaSwgMSwgTikgY2luID4+IEFbaV07CiAgICBGT1IobCwgMSwgTikgewogICAgICAgIEZPUihyLCBsICsgMSwgTikgewogICAgICAgICAgICBpbnQgVCA9IC0oQVtsXSArIEFbcl0pICsgTUFYQTsKICAgICAgICAgICAgaWYgKFQgPj0gMCAmJiBUIDw9IDIgKiBNQVhBKSBjbnRbbF1bcl0gPSBmcmVxW1RdOwogICAgICAgICAgICBmcmVxW0Fbcl0gKyBNQVhBXSsrOwogICAgICAgIH0KICAgICAgICBGT1IociwgbCArIDEsIE4pIGZyZXFbQVtyXSArIE1BWEFdLS07CiAgICB9CiAgICBGT1IobGVuLCAzLCBOKSBGT1IobCwgMSwgTiAtIGxlbiArIDEpIHsKICAgICAgICBpbnQgciA9IGwgKyBsZW4gLSAxOwogICAgICAgIGRwW2xdW3JdID0gZHBbbCArIDFdW3JdICsgZHBbbF1bciAtIDFdIC0gZHBbbCArIDFdW3IgLSAxXSArIGNudFtsXVtyXTsKICAgIH0KICAgIEZPUihpLCAxLCBRKSB7CiAgICAgICAgaW50IGwsIHI7IGNpbiA+PiBsID4+IHI7CiAgICAgICAgY291dCA8PCBkcFtsXVtyXSA8PCAiXG4iOwogICAgfQp9CgppbnQzMl90IG1haW4oKSB7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgY2luLnRpZShOVUxMKTsKCiAgICAjZGVmaW5lIFRBU0sgImJsaXp6aW5nXyIKICAgIGlmIChmb3BlbihUQVNLIi5JTlAiLCAiciIpKSB7CiAgICAgICAgZnJlb3BlbihUQVNLIi5JTlAiLCAiciIsIHN0ZGluKTsKICAgICAgICBmcmVvcGVuKFRBU0siLk9VVCIsICJ3Iiwgc3Rkb3V0KTsKICAgIH0KCiAgICBpbnQgdGVzdHMgPSAxOyAvLyBjaW4gPj4gdGVzdHM7CiAgICB3aGlsZSAodGVzdHMtLSkgc29sdmUoKTsKCiAgICAjaWZkZWYgTE9DQUwKICAgIGNlcnIgPDwgMS4wICogY2xvY2soKSAvIENMT0NLU19QRVJfU0VDIDw8ICIgcy5cbiI7CiAgICAjZW5kaWYKICAgIHJldHVybiAwOwp9Cg==