#include <bits/stdc++.h>
using namespace std;
const long long maxn = 300010;
long long t, n, m, q, a[maxn] = {}, f[maxn] = {}, ans = 0;
long long l, r;
void add(long long x) {
  if (x == 0 || x > n || f[x]) return;
  f[x] = 1;
  if (a[x] < a[x + 1] && a[x] < a[x - 1]) ans -= a[x];
  if (a[x] > a[x + 1] && a[x] > a[x - 1]) ans += a[x];
}
void del(long long x) {
  if (x == 0 || x > n || !f[x]) return;
  f[x] = 0;
  if (a[x] < a[x + 1] && a[x] < a[x - 1]) ans += a[x];
  if (a[x] > a[x + 1] && a[x] > a[x - 1]) ans -= a[x];
}
int main() {
  scanf("%lld", &t);
  while (t--) {
    scanf("%lld%lld", &n, &q);
    for (int i = 1; i <= n; i++) scanf("%lld", &a[i]), f[i] = 0;
    ans = 0;
    a[0] = 0, a[n + 1] = 0;
    for (int i = 1; i <= n; i++) add(i);
    printf("%lld\n", ans);
    while (q--) {
      scanf("%lld%lld", &l, &r);
      del(l - 1);
      del(l);
      del(l + 1);
      del(r - 1);
      del(r);
      del(r + 1);
      swap(a[l], a[r]);
      add(l - 1);
      add(l);
      add(l + 1);
      add(r - 1);
      add(r);
      add(r + 1);
      printf("%lld\n", ans);
    }
  }
  return 0;
}
