#include <bits/stdc++.h>
using namespace std;
int a[100005], lpos[100005], rpos[100005], d[100005], n, q, l, r;
void prefun() {
  for (int i = 1; i < n; i++) d[i] = abs(a[i + 1] - a[i]);
  stack<int> s;
  for (int i = 1; i < n; i++) {
    if (s.empty() || d[s.top()] > d[i])
      s.push(i);
    else {
      while (!s.empty() && d[s.top()] < d[i]) {
        rpos[s.top()] = i;
        s.pop();
      }
      s.push(i);
    }
  }
  while (!s.empty()) {
    rpos[s.top()] = n;
    s.pop();
  }
  for (int i = n - 1; i >= 0; i--) {
    if (s.empty() || d[s.top()] > d[i])
      s.push(i);
    else {
      while (!s.empty() && d[s.top()] <= d[i]) {
        lpos[s.top()] = i;
        s.pop();
      }
      s.push(i);
    }
  }
  while (!s.empty()) {
    lpos[s.top()] = 0;
    s.pop();
  }
}
int main() {
  cin >> n >> q;
  for (int i = 1; i <= n; i++) scanf("%lld", a + i);
  prefun();
  while (q--) {
    cin >> l >> r;
    long long ans = 0;
    for (int i = l; i < r; i++) {
      long long rlen =
          i == r - 1 ? 1 : (rpos[i] > (r - 1) ? (r - i) : (rpos[i] - i));
      long long llen = i == l ? 1 : (lpos[i] < l ? (i - l + 1) : (i - lpos[i]));
      ans += (long long)(d[i] * rlen * llen);
    }
    printf("%lld\n", ans);
  }
  return 0;
}
