#include <bits/stdc++.h>
using namespace std;
const int maxn = 3e5 + 5;
int a[maxn], n;
long long ans;
void insert(int i) {
  if (i == 0 || i > n) return;
  if (a[i] > a[i - 1] && a[i] > a[i + 1]) ans += a[i];
  if (a[i] < a[i - 1] && a[i] < a[i + 1]) ans -= a[i];
}
void erase(int i) {
  if (i == 0 || i > n) return;
  if (a[i] > a[i - 1] && a[i] > a[i + 1]) ans -= a[i];
  if (a[i] < a[i - 1] && a[i] < a[i + 1]) ans += a[i];
}
int main() {
  int t, q, l, r;
  scanf("%d", &t);
  while (t--) {
    scanf("%d%d", &n, &q);
    a[0] = a[n + 1] = -1;
    ans = 0;
    for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
    for (int i = 1; i <= n; i++) insert(i);
    printf("%lld\n", ans);
    while (q--) {
      scanf("%d%d", &l, &r);
      if (l == r) {
        printf("%lld\n", ans);
        continue;
      }
      erase(l);
      erase(l + 1);
      erase(l - 1);
      if (l + 1 < r - 1) erase(r - 1);
      if (l + 1 < r) erase(r);
      erase(r + 1);
      swap(a[l], a[r]);
      insert(l);
      insert(l - 1);
      insert(l + 1);
      if (l + 1 < r - 1) insert(r - 1);
      if (l + 1 < r) insert(r);
      insert(r + 1);
      printf("%lld\n", ans);
    }
  }
  return 0;
}
