#include <bits/stdc++.h>
using namespace std;
int64_t mod = 1e9 + 7;
int64_t mult(int64_t n, int64_t k) {
  if (k == 1) {
    return n % mod;
  } else {
    if (k % 2 == 0) {
      int64_t ans = mult(n, k / 2);
      return (ans % mod + ans % mod) % mod;
    } else {
      int64_t ans = mult(n, k / 2);
      return ((ans % mod + ans % mod) + n % mod) % mod;
    }
  }
}
int64_t mul(int64_t n, int64_t k) {
  if (k == 0) {
    return 1;
  } else {
    if (k % 2 == 0) {
      int64_t ans = mul(n, k / 2);
      return mult(ans, ans);
    } else {
      int64_t ans = mul(n, k / 2);
      return mult(ans, mult(ans, n));
    }
  }
}
int64_t gcd(int64_t a, int64_t b) {
  if (b == 0) {
    return a;
  } else
    return gcd(b, a % b);
}
string add(string x, string y) {
  x.push_back('0');
  y.push_back('0');
  while (x.size() > y.size()) y = y + '0';
  while (y.size() > x.size()) x = x + '0';
  int cnt = 0;
  string res = "";
  for (int i = 0; i < x.size(); i++) {
    int ch = cnt + int(x[i]) + int(y[i]) - 96;
    cnt = ch / 10;
    res += char(ch % 10 + 48);
  }
  while (res[res.size() - 1] == '0') res.pop_back();
  return res;
}
string sub(string x, string y) {
  x.push_back('0');
  y.push_back('0');
  while (x.size() > y.size()) y = y + '0';
  while (y.size() > x.size()) x = x + '0';
  int cnt = 0;
  string res = "";
  for (int i = 0; i < x.size(); i++) {
    int ch = int(x[i]) - int(y[i]) - cnt + 10;
    cnt = 1 - ch / 10;
    res += char(ch % 10 + 48);
  }
  while (res[res.size() - 1] == '0') res.pop_back();
  return res;
}
void rev(string &a) { reverse(a.begin(), a.end()); }
int main() {
  ios_base::sync_with_stdio(NULL);
  cin.tie(NULL);
  cout.tie(NULL);
  int64_t t, n, q, a[300005], l, r;
  cin >> t;
  while (t--) {
    cin >> n >> q;
    for (int i = 1; i <= n; i++) {
      cin >> a[i];
    }
    int64_t sum = 0;
    a[n + 1] = 0;
    a[0] = 0;
    for (int i = 1; i <= n; i++) {
      if (a[i] > a[i + 1]) {
        sum += a[i] - a[i + 1];
      }
    }
    cout << sum << endl;
    for (int i = 1; i <= q; i++) {
      cin >> l >> r;
      if ((r - l) == 1) {
        if (a[l] > a[r]) {
          sum -= (a[l] - a[r]);
        }
        if (a[l] < a[r]) {
          sum += (a[r] - a[l]);
        }
        if (a[r] > a[r + 1]) {
          sum -= (a[r] - a[r + 1]);
        }
        if (a[l] > a[r + 1]) {
          sum += (a[l] - a[r + 1]);
        }
        if (a[l - 1] > a[l]) {
          sum -= (a[l - 1] - a[l]);
        }
        if (a[l - 1] > a[r]) {
          sum += (a[l - 1] - a[r]);
        }
      } else {
        if (a[r - 1] > a[r]) {
          sum -= (a[r - 1] - a[r]);
        }
        if (a[r - 1] > a[l]) {
          sum += (a[r - 1] - a[l]);
        }
        if (a[r] > a[r + 1]) {
          sum -= (a[r] - a[r + 1]);
        }
        if (a[l] > a[r + 1]) {
          sum += (a[l] - a[r + 1]);
        }
        if (a[l - 1] > a[l]) {
          sum -= (a[l - 1] - a[l]);
        }
        if (a[l - 1] > a[r]) {
          sum += (a[l - 1] - a[r]);
        }
        if (a[l] > a[l + 1]) {
          sum -= (a[l] - a[l + 1]);
        }
        if (a[r] > a[l + 1]) {
          sum += (a[r] - a[l + 1]);
        }
      }
      cout << sum << endl;
      swap(a[l], a[r]);
    }
  }
}
