#include <bits/stdc++.h>
using namespace std;
vector<pair<int, pair<int, int> > > v;
vector<int> prime[1000009];
int ar[100007];
int lidx[100007];
int ridx[100007];
int d[100007];
stack<int> st;
int main() {
  int n;
  int q;
  scanf("%d", &n);
  scanf("%d", &q);
  for (int i = int(1); i <= int(n); i++) {
    scanf("%d", &ar[i]);
  }
  for (int i = int(1); i <= int(q); i++) {
    int l, r;
    scanf("%d", &l);
    scanf("%d", &r);
    for (int idx = int(l + 1); idx <= int(r); idx++) {
      d[idx] = abs(ar[idx] - ar[idx - 1]);
    }
    lidx[l + 1] = l + 1;
    st.push(l + 1);
    for (int idx = int(l + 2); idx <= int(r); idx++) {
      while (!st.empty() and d[idx] >= d[st.top()]) st.pop();
      if (st.empty())
        lidx[idx] = l + 1;
      else
        lidx[idx] = st.top() + 1;
      st.push(idx);
    }
    while (!st.empty()) st.pop();
    ridx[r] = r;
    st.push(r);
    for (int idx = int(r - 1); idx >= int(l + 1); idx--) {
      while (!st.empty() and d[idx] > d[st.top()]) st.pop();
      if (st.empty())
        ridx[idx] = r;
      else
        ridx[idx] = st.top() - 1;
      st.push(idx);
    }
    long long an = 0;
    for (int idx = int(l + 1); idx <= int(r); idx++) {
      an = an +
           d[idx] * 1LL * ((idx - lidx[idx] + 1) * 1LL * (ridx[idx] - idx + 1));
    }
    cout << an << endl;
    while (!st.empty()) st.pop();
  }
  return 0;
}
