#include <bits/stdc++.h>
using namespace std;
const int MAX = 3E5 + 5;
long long t, n, q;
long long a[MAX];
void swap(long long* a, long long* b) {
  long long tp = *a;
  *a = *b;
  *b = tp;
}
long long pro(long long ans, long long li, long long ri) {
  if (li == ri)
    return ans;
  else if (li + 1 == ri) {
    ans -= max(0ll, a[li - 1] - a[li]);
    ans -= max(0ll, a[li] - a[li + 1]);
    ans -= max(0ll, a[ri] - a[ri + 1]);
    swap(&a[li], &a[ri]);
    ans += max(0ll, a[li - 1] - a[li]);
    ans += max(0ll, a[li] - a[li + 1]);
    ans += max(0ll, a[ri] - a[ri + 1]);
  } else if (li == 1 || ri == n)
    if (li != 1) {
      ans -= max(0ll, a[li - 1] - a[li]);
      ans -= max(0ll, a[li] - a[li + 1]);
      ans -= max(0ll, a[ri - 1] - a[ri]);
      ans -= max(0ll, a[ri] - a[ri + 1]);
      swap(&a[li], &a[ri]);
      ans += max(0ll, a[li - 1] - a[li]);
      ans += max(0ll, a[li] - a[li + 1]);
      ans += max(0ll, a[ri - 1] - a[ri]);
      ans += max(0ll, a[ri] - a[ri + 1]);
    } else if (ri != n) {
      ans -= max(0ll, a[li] - a[li + 1]);
      ans -= max(0ll, a[ri - 1] - a[ri]);
      ans -= max(0ll, a[ri] - a[ri + 1]);
      swap(&a[li], &a[ri]);
      ans += max(0ll, a[li] - a[li + 1]);
      ans += max(0ll, a[ri - 1] - a[ri]);
      ans += max(0ll, a[ri] - a[ri + 1]);
    } else {
      ans -= max(0ll, a[li] - a[li + 1]);
      ans -= max(0ll, a[ri - 1] - a[ri]);
      ans -= max(0ll, a[ri] - a[ri + 1]);
      swap(&a[li], &a[ri]);
      ans += max(0ll, a[li] - a[li + 1]);
      ans += max(0ll, a[ri - 1] - a[ri]);
      ans += max(0ll, a[ri] - a[ri + 1]);
    }
  else {
    ans -= max(0ll, a[li - 1] - a[li]);
    ans -= max(0ll, a[li] - a[li + 1]);
    ans -= max(0ll, a[ri - 1] - a[ri]);
    ans -= max(0ll, a[ri] - a[ri + 1]);
    swap(&a[li], &a[ri]);
    ans += max(0ll, a[li - 1] - a[li]);
    ans += max(0ll, a[li] - a[li + 1]);
    ans += max(0ll, a[ri - 1] - a[ri]);
    ans += max(0ll, a[ri] - a[ri + 1]);
  }
  return ans;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0), cout.tie(0);
  cin >> t;
  while (t--) {
    memset(a, 0, sizeof(a));
    cin >> n >> q;
    for (int i = 1; i <= n; i++) cin >> a[i];
    long long ans = 0;
    for (int i = 1; i <= n; i++) ans += max(0ll, a[i] - a[i + 1]);
    cout << ans << endl;
    while (q--) {
      long long li, ri;
      cin >> li >> ri;
      ans = pro(ans, li, ri);
      cout << ans << endl;
    }
  }
  return 0;
}
