func_code_string: #include <bits/stdc++.h>   using namespace std;   const int mod = 1e9 + 7;   const int dx[] = {-1, 0, 1, 0, -1, -1, 1, 1};   const int dy[] = {0, 1, 0, -1, -1, 1, -1, 1};   const int N = 3e5 + 2;   int v[N], n, q;   void read() {     cin >> n >> q;     for (int i = 1; i <= n; i++) cin >> v[i];     v[0] = 0;     v[n + 1] = 0;   }   int maxima_con[N], minima_con[N];   long long maxima_sum = 0, minima_sum = 0;   bool is_maxima(int indx) { return v[indx] > max(v[indx - 1], v[indx + 1]); }   bool is_minima(int indx) { return v[indx] < min(v[indx - 1], v[indx + 1]); }   void see(int indx) {     int &i = indx;     maxima_sum -= maxima_con[i];     minima_sum -= minima_con[i];     maxima_con[i] = 0;     minima_con[i] = 0;     if (is_maxima(i)) {       maxima_con[i] = v[i];       maxima_sum += maxima_con[i];     }     if (is_minima(i)) {       minima_con[i] = v[i];       minima_sum += minima_con[i];     }   }   void solve(int test_case) {     read();     for (int i = 1; i <= n; i++) {       see(i);     }     cout << maxima_sum - minima_sum;     cout <<   n ;     ;     for (int i = 0; i < q; i++) {       int l, r;       cin >> l >> r;       swap(v[l], v[r]);       for (int del = -1; del <= 1; del++) {         int indx = l + del;         if (indx > 0 && indx <= n) see(indx);         indx = r + del;         if (indx > 0 && indx <= n) see(indx);       }       cout << maxima_sum - minima_sum;       cout <<   n ;       ;     }   }   void clear_data() {     for (int i = 1; i <= n; i++) maxima_con[i] = 0, minima_con[i] = 0;     maxima_sum = 0;     minima_sum = 0;   }   int main() {     ios_base ::sync_with_stdio(false);     cin.tie(0);     int t = 1;     cin >> t;     for (int i = 1; i <= t; i++) {       solve(i);       clear_data();     }     return 0;   }   