#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define s second
#define f first
#define pb push_back
#define ep emplace
#define eb emplace_back
#define lb lower_bound
#define ub upper_bound
#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()
#define uniquev(v) sort(all(v)), (v).resize(unique(all(v)) - (v).begin())
#define mem(f,x) memset(f , x , sizeof(f))
#define sz(x) (int)(x).size()
#define __lcm(a, b) (1ll * ((a) / __gcd((a), (b))) * (b))
#define mxx *max_element
#define mnn *min_element
#define cntbit(x) __builtin_popcountll(x)
#define len(x) (int)(x.length())
const int N = 2e5 + 2;
const int block = 600;
vector <pair <int, int>> ask[(int)N / block + 100];
int l[N], r[N], nxt[N], pr[N], a[N], p[N];
ll ans[N];
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n, q;
cin >> n >> q;
for (int i = 1; i <= q; i++)
ans[i] = 0;
array <int, 2> _, b[n];
for (int i = 1; i <= n; i++) {
cin >> a[i];
b[i - 1] = {a[i], i};
}
sort(b, b + n);
for (int i = 0; i < n; i++)
p[b[i][1]] = i;
for (int i = 1; i <= q; i++) {
int qL, qR; cin >> qL >> qR;
qL = lower_bound(b, b + n, _ = {qL}) - b;
qR = lower_bound(b, b + n, _ = {qR + 1}) - b - 1;
if(qL <= qR && qL < n && 0 <= qR)
ask[qL / block].push_back({qR, i});
l[i] = qL;
r[i] = qR;
}
for (int id = 0; id * block <= n; id++) {
if (ask[id].empty())
continue;
sort(all(ask[id]));
int st = id * block, cur = ask[id].back().f;
fill(pr, pr + n + 1, 0);
fill(nxt, nxt + n + 1, 0);
ll sum = 0;
int lst = 0;
for (int i = 1; i <= n; i++) {
if (p[i] >= st && p[i] <= cur) {
if (lst) {
nxt[lst] = i;
sum += abs(a[i] - a[lst]);
}
pr[i] = lst;
lst = i;
}
}
ll save = 0;
stack <pair <int, int>> s1, s2;
for (int i = cur; sz(ask[id]); i--) {
save = sum;
while (sz(ask[id]) && ask[id].back().f == i) {
pair <int, int> top = ask[id].back();
ask[id].pop_back();
for (int j = st; j < l[top.s]; j++) {
int pos = b[j][1];
if (nxt[pos]) {
sum -= abs(a[pos] - a[nxt[pos]]);
}
if (pr[pos]) {
sum -= abs(a[pos] - a[pr[pos]]);
}
if (nxt[pos] && pr[pos]) {
sum += abs(a[nxt[pos]] - a[pr[pos]]);
}
if (pr[pos]) {
s1.push({pr[pos], pos});
nxt[pr[pos]] = nxt[pos];
}
if (nxt[pos]) {
s2.push({nxt[pos], pos});
pr[nxt[pos]] = pr[pos];
}
}
ans[top.s] = sum;
sum = save;
while (sz(s1)) {
pair <int, int> t = s1.top();
s1.pop();
nxt[t.f] = t.s;
}
while (sz(s2)) {
pair <int, int> t = s2.top();
s2.pop();
pr[t.f] = t.s;
}
}
int pos = b[i][1];
if (nxt[pos]) {
sum -= abs(a[pos] - a[nxt[pos]]);
}
if (pr[pos]) {
sum -= abs(a[pos] - a[pr[pos]]);
}
if (nxt[pos] && pr[pos]) {
sum += abs(a[nxt[pos]] - a[pr[pos]]);
}
if (pr[pos]) {
nxt[pr[pos]] = nxt[pos];
}
if (nxt[pos]) {
pr[nxt[pos]] = pr[pos];
}
}
}
for (int i = 1; i <= q; i++) {
assert(ans[i] >= 0);
cout << ans[i] << '\n';
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgbG9uZyBsb25nIGxsOwoKI2RlZmluZSAgICAgICAgICAgcyAgICAgc2Vjb25kCiNkZWZpbmUgICAgICAgICAgIGYgICAgIGZpcnN0CiNkZWZpbmUgICAgICAgICAgIHBiICAgIHB1c2hfYmFjawojZGVmaW5lICAgICAgICAgICBlcCAgICBlbXBsYWNlCiNkZWZpbmUgICAgICAgICAgIGViICAgIGVtcGxhY2VfYmFjawojZGVmaW5lICAgICAgICAgICBsYiAgICBsb3dlcl9ib3VuZAojZGVmaW5lICAgICAgICAgICB1YiAgICB1cHBlcl9ib3VuZAojZGVmaW5lICAgICAgIGFsbCh4KSAgICB4LmJlZ2luKCksIHguZW5kKCkKI2RlZmluZSAgICAgIHJhbGwoeCkgICAgeC5yYmVnaW4oKSwgeC5yZW5kKCkKI2RlZmluZSAgIHVuaXF1ZXYodikgICAgc29ydChhbGwodikpLCAodikucmVzaXplKHVuaXF1ZShhbGwodikpIC0gKHYpLmJlZ2luKCkpCiNkZWZpbmUgICAgIG1lbShmLHgpICAgIG1lbXNldChmICwgeCAsIHNpemVvZihmKSkKI2RlZmluZSAgICAgICAgc3ooeCkgICAgKGludCkoeCkuc2l6ZSgpCiNkZWZpbmUgIF9fbGNtKGEsIGIpICAgICgxbGwgKiAoKGEpIC8gX19nY2QoKGEpLCAoYikpKSAqIChiKSkKI2RlZmluZSAgICAgICAgICBteHggICAgKm1heF9lbGVtZW50CiNkZWZpbmUgICAgICAgICAgbW5uICAgICptaW5fZWxlbWVudAojZGVmaW5lICAgIGNudGJpdCh4KSAgICBfX2J1aWx0aW5fcG9wY291bnRsbCh4KQojZGVmaW5lICAgICAgIGxlbih4KSAgICAoaW50KSh4Lmxlbmd0aCgpKQogCmNvbnN0IGludCBOID0gMmU1ICsgMjsKY29uc3QgaW50IGJsb2NrID0gNjAwOwoKdmVjdG9yIDxwYWlyIDxpbnQsIGludD4+IGFza1soaW50KU4gLyBibG9jayArIDEwMF07CmludCBsW05dLCByW05dLCBueHRbTl0sIHByW05dLCBhW05dLCBwW05dOwpsbCBhbnNbTl07CgppbnQgbWFpbigpIHsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOwogICAgY291dC50aWUoMCk7CgogICAgaW50IG4sIHE7CiAgICBjaW4gPj4gbiA+PiBxOwoKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IHE7IGkrKykKICAgICAgICBhbnNbaV0gPSAwOwoKICAgIGFycmF5IDxpbnQsIDI+IF8sIGJbbl07CgogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgY2luID4+IGFbaV07CiAgICAgICAgYltpIC0gMV0gPSB7YVtpXSwgaX07CiAgICB9CgogICAgc29ydChiLCBiICsgbik7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykKICAgICAgICBwW2JbaV1bMV1dID0gaTsgCgogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gcTsgaSsrKSB7CiAgICAgICAgaW50IHFMLCBxUjsgY2luID4+IHFMID4+IHFSOwogICAgICAgIHFMID0gbG93ZXJfYm91bmQoYiwgYiArIG4sIF8gPSB7cUx9KSAtIGI7CiAgICAgICAgcVIgPSBsb3dlcl9ib3VuZChiLCBiICsgbiwgXyA9IHtxUiArIDF9KSAtIGIgLSAxOwogICAgICAgIAogICAgICAgIGlmKHFMIDw9IHFSICYmIHFMIDwgbiAmJiAwIDw9IHFSKQogICAgICAgICAgICBhc2tbcUwgLyBibG9ja10ucHVzaF9iYWNrKHtxUiwgaX0pOwoKICAgICAgICBsW2ldID0gcUw7CiAgICAgICAgcltpXSA9IHFSOwogICAgfQoKICAgIGZvciAoaW50IGlkID0gMDsgaWQgKiBibG9jayA8PSBuOyBpZCsrKSB7CiAgICAgICAgaWYgKGFza1tpZF0uZW1wdHkoKSkKICAgICAgICAgICAgY29udGludWU7CgogICAgICAgIHNvcnQoYWxsKGFza1tpZF0pKTsKICAgICAgICBpbnQgc3QgPSBpZCAqIGJsb2NrLCBjdXIgPSBhc2tbaWRdLmJhY2soKS5mOwoKICAgICAgICBmaWxsKHByLCBwciArIG4gKyAxLCAwKTsKICAgICAgICBmaWxsKG54dCwgbnh0ICsgbiArIDEsIDApOwoKICAgICAgICBsbCBzdW0gPSAwOwogICAgICAgIGludCBsc3QgPSAwOwogICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgICAgICBpZiAocFtpXSA+PSBzdCAmJiBwW2ldIDw9IGN1cikgewogICAgICAgICAgICAgICAgaWYgKGxzdCkgewogICAgICAgICAgICAgICAgICAgIG54dFtsc3RdID0gaTsgIAogICAgICAgICAgICAgICAgICAgIHN1bSArPSBhYnMoYVtpXSAtIGFbbHN0XSk7IAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcHJbaV0gPSBsc3Q7CiAgICAgICAgICAgICAgICBsc3QgPSBpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBsbCBzYXZlID0gMDsKICAgICAgICBzdGFjayA8cGFpciA8aW50LCBpbnQ+PiBzMSwgczI7CiAgICAgICAgZm9yIChpbnQgaSA9IGN1cjsgc3ooYXNrW2lkXSk7IGktLSkgewogICAgICAgICAgICBzYXZlID0gc3VtOwogICAgICAgICAgICB3aGlsZSAoc3ooYXNrW2lkXSkgJiYgYXNrW2lkXS5iYWNrKCkuZiA9PSBpKSB7CiAgICAgICAgICAgICAgICBwYWlyIDxpbnQsIGludD4gdG9wID0gYXNrW2lkXS5iYWNrKCk7CiAgICAgICAgICAgICAgICBhc2tbaWRdLnBvcF9iYWNrKCk7CiAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gc3Q7IGogPCBsW3RvcC5zXTsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAgaW50IHBvcyA9IGJbal1bMV07CiAgICAgICAgICAgICAgICAgICAgaWYgKG54dFtwb3NdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN1bSAtPSBhYnMoYVtwb3NdIC0gYVtueHRbcG9zXV0pOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYgKHByW3Bvc10pIHsKICAgICAgICAgICAgICAgICAgICAgICAgc3VtIC09IGFicyhhW3Bvc10gLSBhW3ByW3Bvc11dKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmIChueHRbcG9zXSAmJiBwcltwb3NdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN1bSArPSBhYnMoYVtueHRbcG9zXV0gLSBhW3ByW3Bvc11dKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmIChwcltwb3NdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHMxLnB1c2goe3ByW3Bvc10sIHBvc30pOwogICAgICAgICAgICAgICAgICAgICAgICBueHRbcHJbcG9zXV0gPSBueHRbcG9zXTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmIChueHRbcG9zXSkgewogICAgICAgICAgICAgICAgICAgICAgICBzMi5wdXNoKHtueHRbcG9zXSwgcG9zfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHByW254dFtwb3NdXSA9IHByW3Bvc107CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGFuc1t0b3Auc10gPSBzdW07CiAgICAgICAgICAgICAgICBzdW0gPSBzYXZlOwoKICAgICAgICAgICAgICAgIHdoaWxlIChzeihzMSkpIHsKICAgICAgICAgICAgICAgICAgICBwYWlyIDxpbnQsIGludD4gdCA9IHMxLnRvcCgpOwogICAgICAgICAgICAgICAgICAgIHMxLnBvcCgpOwogICAgICAgICAgICAgICAgICAgIG54dFt0LmZdID0gdC5zOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHdoaWxlIChzeihzMikpIHsKICAgICAgICAgICAgICAgICAgICBwYWlyIDxpbnQsIGludD4gdCA9IHMyLnRvcCgpOwogICAgICAgICAgICAgICAgICAgIHMyLnBvcCgpOwogICAgICAgICAgICAgICAgICAgIHByW3QuZl0gPSB0LnM7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGludCBwb3MgPSBiW2ldWzFdOwogICAgICAgICAgICBpZiAobnh0W3Bvc10pIHsKICAgICAgICAgICAgICAgIHN1bSAtPSBhYnMoYVtwb3NdIC0gYVtueHRbcG9zXV0pOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAocHJbcG9zXSkgewogICAgICAgICAgICAgICAgc3VtIC09IGFicyhhW3Bvc10gLSBhW3ByW3Bvc11dKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKG54dFtwb3NdICYmIHByW3Bvc10pIHsKICAgICAgICAgICAgICAgIHN1bSArPSBhYnMoYVtueHRbcG9zXV0gLSBhW3ByW3Bvc11dKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKHByW3Bvc10pIHsKICAgICAgICAgICAgICAgIG54dFtwcltwb3NdXSA9IG54dFtwb3NdOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAobnh0W3Bvc10pIHsKICAgICAgICAgICAgICAgIHByW254dFtwb3NdXSA9IHByW3Bvc107CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gcTsgaSsrKSB7CiAgICAgICAgYXNzZXJ0KGFuc1tpXSA+PSAwKTsKICAgICAgICBjb3V0IDw8IGFuc1tpXSA8PCAnXG4nOwogICAgfQoKICAgIHJldHVybiAwOwp9Cg==