#include <bits/stdc++.h>
using namespace std;
void print_vector(vector<int> v);
void print_array(int* array, int start, int end);
long long a[100100], diff[100100], n, q, lsmall[100100], rsmall[100100], x, y;
int main() {
  ios::sync_with_stdio(false);
  cin >> n >> q;
  for (int i = (0), _b = (n); i < _b; i++) cin >> a[i];
  for (int i = (0), _b = (n - 1); i < _b; i++) diff[i] = abs(a[i + 1] - a[i]);
  stack<pair<int, int> > s, s2;
  for (int i = (0), _b = (n - 1); i < _b; i++) {
    while (!s.empty() && diff[i] >= s.top().first) s.pop();
    if (s.empty())
      lsmall[i] = i;
    else
      lsmall[i] = i - 1 - s.top().second;
    s.push(pair<int, int>(diff[i], i));
  }
  for (int i = n - 1; i >= 0; i--) {
    while (!s2.empty() && diff[i] > s2.top().first) s2.pop();
    if (s2.empty())
      rsmall[i] = n - 1 - i;
    else
      rsmall[i] = s2.top().second - i - 1;
    s2.push(pair<int, int>(diff[i], i));
  }
  for (int i = (0), _b = (q); i < _b; i++) {
    long long ans = 0;
    cin >> x >> y;
    x--, y--;
    for (int i = (x), _b = (y); i < _b; i++) {
      long long l = min(lsmall[i], i - x);
      long long r = min(rsmall[i], y - 1 - i);
      ans += (l + 1) * (r + 1) * diff[i];
    }
    cout << ans << endl;
  }
  return 0;
}
void print_array(int* array, int start, int end) {
  printf("[");
  for (int i = (start), _b = (end); i < _b; i++) {
    printf("%d ", array[i]);
  }
  printf("]");
  printf("\n");
}
void print_vector(vector<int> v) {
  printf("[");
  for (int i = (0), _b = (v.size()); i < _b; i++) {
    printf("%d ", v[i]);
  }
  printf("]");
  printf("\n");
}
