#include <bits/stdc++.h>
using namespace std;
const int maxN = 1e5 + 10;
int n, t;
long long a[maxN];
long long f[maxN], _l[maxN], _r[maxN];
stack<long long> st;
void io() {
  freopen(
      ""
      ".inp",
      "r", stdin);
  freopen(
      ""
      ".out",
      "w", stdout);
}
int main() {
  cin >> n >> t;
  for (int i = (1), _b = (n); i <= _b; ++i) cin >> a[i];
  for (int i = (1), _b = (n - 1); i <= _b; ++i) f[i] = abs(a[i + 1] - a[i]);
  for (int i = (1), _b = (n - 1); i <= _b; ++i) _l[i] = 1, _r[i] = n - 1;
  f[0] = 1e9;
  st.push(0);
  for (int i = (1), _b = (n - 1); i <= _b; ++i) {
    while (st.size() && f[st.top()] <= f[i]) st.pop();
    if (st.size()) _l[i] = st.top();
    st.push(i);
  }
  while (st.size()) st.pop();
  f[n] = 1e9;
  st.push(n);
  for (int i = (n - 1), _b = (1); i >= _b; --i) {
    while (st.size() && f[st.top()] < f[i]) st.pop();
    if (st.size()) _r[i] = st.top(), st.push(i);
  }
  for (int i = (1), _b = (n - 1); i <= _b; ++i) _l[i]++, _r[i]--;
  int l, r;
  for (int i = (1), _b = (t); i <= _b; ++i) {
    cin >> l >> r;
    long long sum = 0;
    for (int j = (l), _b = (r - 1); j <= _b; ++j) {
      sum += f[j] * (j - max((long long)l, _l[j]) + 1) *
             (min((long long)(r - 1), _r[j]) - j + 1);
    }
    cout << sum << "\n";
  }
  return 0;
}
