func_code_string: #include <bits/stdc++.h>   using namespace std;   bool DEB = false;   void MP() {     ios::sync_with_stdio(false);     cin.tie(0);   }   #pragma comment(linker,  /STACK:256000000 )   const long long inf = (long long)1e13 + 9;   const int MAX = (int)3e5 + 10;   int a[MAX];   long long t[4 * MAX][2][2];   inline void f(int v, int a, int b) {     t[v][0][0] = min({t[a][0][0], t[b][0][0], t[a][0][1] + t[b][0][0],                       t[a][0][0] - t[b][1][1]});     t[v][0][1] = min({t[a][0][1], t[b][0][1], t[a][0][1] + t[b][0][1],                       t[a][0][0] - t[b][1][0]});     t[v][1][0] = max({t[a][1][0], t[b][1][0], t[a][1][1] + t[b][1][0],                       t[a][1][0] - t[b][0][1]});     t[v][1][1] = max({t[a][1][1], t[b][1][1], t[a][1][1] + t[b][1][1],                       t[a][1][0] - t[b][0][0]});   }   inline void build(int v, int lv, int rv) {     if (lv + 1 == rv) {       t[v][0][0] = a[lv];       t[v][0][1] = inf;       t[v][1][0] = a[lv];       t[v][1][1] = -inf;       return;     }     int m = lv + rv >> 1;     build(v << 1, lv, m);     build((v << 1) + 1, m, rv);     f(v, v << 1, (v << 1) + 1);   }   inline void update(int v, int lv, int rv, int id, int val) {     if (lv + 1 == rv) {       t[v][0][0] = val;       t[v][0][1] = inf;       t[v][1][0] = val;       t[v][1][1] = -inf;       return;     }     int m = lv + rv >> 1;     if (id < m)       update(v << 1, lv, m, id, val);     else       update((v << 1) + 1, m, rv, id, val);     f(v, v << 1, (v << 1) + 1);   }   void solve() {     int n, q;     cin >> n >> q;     for (int i = 0; i < (n); ++i) cin >> a[i];     build(1, 0, n);     cout << (max(t[1][1][0], t[1][1][1])) <<   n ;     while (q--) {       int l, r;       cin >> l >> r;       --l, --r;       swap(a[l], a[r]);       update(1, 0, n, l, a[l]);       update(1, 0, n, r, a[r]);       cout << (max(t[1][1][0], t[1][1][1])) <<   n ;     }   }   signed main() {     MP();     int T;     for (cin >> T; T--;) {       solve();     }     return 0;   }   