#include <bits/stdc++.h>
using namespace std;
int n, q;
long long ans[123];
int x[123], y[123];
int a[123456];
inline void query(int start, int idx, int end, long long mx) {
  for (int i = 0; i < q; i++) {
    if (x[i] <= idx && idx <= y[i]) {
      int up = min(end, y[i] + 1), down = max(start, x[i] - 1);
      ans[i] += mx * (up - idx) * (idx - down);
    }
  }
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> q;
  for (int i = 0; i < n; i++) cin >> a[i];
  n--;
  for (int i = 0; i < n; i++) a[i] = abs(a[i + 1] - a[i]);
  for (int i = 0; i < q; i++) {
    cin >> x[i] >> y[i];
    x[i]--;
    y[i] -= 2;
  }
  set<int> st;
  st.insert(-1);
  st.insert(n);
  vector<pair<long long, int> > p(n);
  for (int i = 0; i < n; i++) p[i] = make_pair(a[i], i);
  sort(p.begin(), p.end());
  memset(ans, 0, sizeof ans);
  for (int j = n - 1; j >= 0; j--) {
    long long mx = p[j].first;
    int idx = p[j].second;
    st.insert(idx);
    st.count(idx);
    set<int>::iterator it = st.find(idx);
    ++it;
    int up = (*it);
    --it;
    --it;
    int down = (*it);
    query(down, idx, up, mx);
    st.erase(idx);
    st.insert(idx);
  }
  for (int i = 0; i < q; i++) cout << ans[i] << '\n';
  return 0;
}
