func_code_string: #include <bits/stdc++.h>   using namespace std;   const int OO = 1e9;   const double EPS = 1e-9;   template <class T>   void _db(const char* dbStr, T e) {     cout << dbStr <<   =   << e << endl;   }   template <class T, class... L>   void _db(const char* dbStr, T e, L... r) {     while (*dbStr !=  , ) cout << *dbStr++;     cout <<   =   << e <<  , ;     _db(dbStr + 1, r...);   }   template <class S, class T>   ostream& operator<<(ostream& o, const map<S, T>& v) {     o <<  [ ;     int i = 0;     for (const pair<S, T>& pr : v)       o << (!i++ ?    :  ,  ) <<  {  << pr.first <<   :   << pr.second <<  } ;     return o <<  ] ;   }   template <template <class, class...> class S, class T, class... L>   ostream& operator<<(ostream& o, const S<T, L...>& v) {     o <<  [ ;     int i = 0;     for (const auto& e : v) o << (!i++ ?    :  ,  ) << e;     return o <<  ] ;   }   template <class S, class T>   ostream& operator<<(ostream& o, const pair<S, T>& pr) {     return o <<  (  << pr.first <<  ,   << pr.second <<  ) ;   }   ostream& operator<<(ostream& o, const string& s) {     for (const char& c : s) o << c;     return o;   }   template <class T>   using V = vector<T>;   template <class T>   using VV = V<V<T>>;   template <class T>   using VVV = VV<V<T>>;   using ll = long long;   using pii = pair<int, int>;   using vi = V<int>;   using vii = V<pii>;   using vvi = VV<int>;   using mii = map<int, int>;   using umii = unordered_map<int, int>;   using si = set<int>;   using usi = unordered_set<int>;   vii monoStFunc(vi a) {     int n = int(a.size());     vii b(n);     stack<pii> st;     st.push(make_pair(INT_MAX, -1));     for (int i = 0; i < n; ++i) {       while (st.top().first < a[i]) st.pop();       b[i].first = st.top().second;       st.push(make_pair(a[i], i));     }     while (!st.empty()) st.pop();     st.push(make_pair(INT_MAX, n));     for (int i = n - 1; i >= 0; --i) {       while (st.top().first <= a[i]) st.pop();       b[i].second = st.top().second;       st.push(make_pair(a[i], i));     }     return b;   }   int n, q;   vi a, d;   int main() {     ios::sync_with_stdio(false);     cout.precision(10);     cin.tie(0);     cin >> n >> q;     a.assign(n, 0);     for (int i = 0; i < n; ++i) cin >> a[i];     d.assign(n - 1, 0);     for (int i = 0; i < n - 1; ++i) d[i] = abs(a[i + 1] - a[i]);     true;     for (int qq = 0; qq < q; ++qq) {       int l, r;       cin >> l >> r;       --l, --r;       vi v;       for (int i = l; i < r; ++i) v.push_back(d[i]);       vii LR = monoStFunc(v);       ll ans = 0;       for (int i = 0; i < int(v.size()); ++i)         ans += v[i] * 1LL * ((i - LR[i].first) * 1LL * (LR[i].second - i));       cout << ans <<   n ;     }     return 0;   }   