#include <bits/stdc++.h>
const long long Maxn = 3e5 + 5;
using namespace std;
long long n, a[Maxn], ans, t, k;
inline long long R() {
  char ch = getchar();
  long long x = 0;
  bool f = 0;
  for (; !isdigit(ch); ch = getchar())
    if (ch == '-') f = 1;
  for (; isdigit(ch); ch = getchar()) x = (x << 1) + (x << 3) + (ch ^ 48);
  if (f == 1) x = -x;
  return x;
}
inline void modify(long long pos1, long long value1, long long pos2,
                   long long value2) {
  ans -= a[pos1] > a[pos1 + 1] ? a[pos1] - a[pos1 + 1] : 0;
  if (pos1 > 1) ans -= a[pos1 - 1] > a[pos1] ? a[pos1 - 1] - a[pos1] : 0;
  if (pos2 != pos1 - 1)
    ans -= a[pos2] > a[pos2 + 1] ? a[pos2] - a[pos2 + 1] : 0;
  if (pos2 > 1 && pos2 - 1 != pos1)
    ans -= a[pos2 - 1] > a[pos2] ? a[pos2 - 1] - a[pos2] : 0;
  a[pos1] = value1;
  a[pos2] = value2;
  ans += a[pos1] > a[pos1 + 1] ? a[pos1] - a[pos1 + 1] : 0;
  if (pos1 > 1) ans += a[pos1 - 1] > a[pos1] ? a[pos1 - 1] - a[pos1] : 0;
  if (pos2 != pos1 - 1)
    ans += a[pos2] > a[pos2 + 1] ? a[pos2] - a[pos2 + 1] : 0;
  if (pos2 > 1 && pos2 - 1 != pos1)
    ans += a[pos2 - 1] > a[pos2] ? a[pos2 - 1] - a[pos2] : 0;
}
signed main() {
  t = R();
  while (t--) {
    n = R();
    k = R();
    a[0] = a[n + 1] = ans = 0;
    for (long long i = 1; i <= n; i++) a[i] = R();
    for (long long i = 1; i <= n; i++)
      ans += a[i] > a[i + 1] ? a[i] - a[i + 1] : 0;
    printf("%lld\n", ans);
    long long x, y, X, Y;
    for (long long i = 1; i <= k; i++) {
      x = R();
      y = R();
      X = a[x];
      Y = a[y];
      if (x != y) modify(x, Y, y, X);
      printf("%lld\n", ans);
    }
  }
}
