#include <bits/stdc++.h>
using namespace std;

long long query(const vector<int> &values) {
    long long answer = 0;
    int N = values.size();
    
    vector<int> left(N+2), right(N+2);
    for (int n=0; n<N+2; ++n) { left[n] = n+1; right[n] = n-1; }
    
    vector< pair<int,int> > events;
    for (int n=0; n<N; ++n) events.push_back( { values[n], n+1 } );
    sort( events.begin(), events.end() );
    
    for (const auto &ev : events) {
        int le = left[ev.second-1], re = right[ev.second+1];
        answer += 1LL * ev.first * (ev.second - le + 1) * (re - ev.second + 1);
        right[le] = re; left[re] = le;
    }
    return answer;
}

int main() {
    int N, Q;
    cin >> N >> Q;
    
    vector<int> A(N);
    for (int &a : A) cin >> a;
    
    vector<int> D(N-1);
    for (int n=0; n<N-1; ++n) D[n] = abs( A[n+1]-A[n] );
    
    while (Q--) {
        int l, r; cin >> l >> r;
        cout << query( vector<int>( D.begin()+l-1, D.begin()+r-1 ) ) << endl;
    }
}