#include <bits/stdc++.h>
using namespace std;
int tab[3 * 100 * 1000 + 5];
short zlicz[3 * 100 * 1000 + 5];
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  long long wyn;
  int t;
  cin >> t;
  for (int z = 1, n, q; z < t + 1; ++z) {
    cin >> n >> q;
    for (int i = 1; i < n + 1; ++i) {
      cin >> tab[i];
      zlicz[i] = 0;
    }
    wyn = 0;
    tab[n + 1] = 0;
    for (int i = 1; i < n + 1; ++i) {
      zlicz[i] += (tab[i - 1] < tab[i]);
      zlicz[i] -= (tab[i - 1] > tab[i]);
      zlicz[i] += (tab[i] > tab[i + 1]);
      zlicz[i] -= (tab[i] < tab[i + 1]);
      wyn += (zlicz[i] == 2) * tab[i];
      wyn -= (zlicz[i] == -2) * tab[i];
    }
    cout << wyn << "\n";
    for (int i = 1, l, r, pam; i < q + 1; ++i) {
      cin >> l >> r;
      if (l >= 2) {
        wyn -= (zlicz[l - 1] == 2) * tab[l - 1];
        wyn += (zlicz[l - 1] == -2) * tab[l - 1];
        zlicz[l - 1] -= (tab[l - 2] < tab[l - 1]);
        zlicz[l - 1] += (tab[l - 2] > tab[l - 1]);
        zlicz[l - 1] -= (tab[l - 1] > tab[l]);
        zlicz[l - 1] += (tab[l - 1] < tab[l]);
      }
      wyn -= (zlicz[l] == 2) * tab[l];
      wyn += (zlicz[l] == -2) * tab[l];
      zlicz[l] -= (tab[l - 1] < tab[l]);
      zlicz[l] += (tab[l - 1] > tab[l]);
      zlicz[l] -= (tab[l] > tab[l + 1]);
      zlicz[l] += (tab[l] < tab[l + 1]);
      if (l <= n - 1) {
        wyn -= (zlicz[l + 1] == 2) * tab[l + 1];
        wyn += (zlicz[l + 1] == -2) * tab[l + 1];
        zlicz[l + 1] -= (tab[l] < tab[l + 1]);
        zlicz[l + 1] += (tab[l] > tab[l + 1]);
        zlicz[l + 1] -= (tab[l + 1] > tab[l + 2]);
        zlicz[l + 1] += (tab[l + 1] < tab[l + 2]);
      }
      if (r >= 2 && r - 1 > l + 1) {
        wyn -= (zlicz[r - 1] == 2) * tab[r - 1];
        wyn += (zlicz[r - 1] == -2) * tab[r - 1];
        zlicz[r - 1] -= (tab[r - 2] < tab[r - 1]);
        zlicz[r - 1] += (tab[r - 2] > tab[r - 1]);
        zlicz[r - 1] -= (tab[r - 1] > tab[r]);
        zlicz[r - 1] += (tab[r - 1] < tab[r]);
      }
      if (r > l + 1) {
        wyn -= (zlicz[r] == 2) * tab[r];
        wyn += (zlicz[r] == -2) * tab[r];
        zlicz[r] -= (tab[r - 1] < tab[r]);
        zlicz[r] += (tab[r - 1] > tab[r]);
        zlicz[r] -= (tab[r] > tab[r + 1]);
        zlicz[r] += (tab[r] < tab[r + 1]);
      }
      if (r <= n - 1 && r + 1 > l + 1) {
        wyn -= (zlicz[r + 1] == 2) * tab[r + 1];
        wyn += (zlicz[r + 1] == -2) * tab[r + 1];
        zlicz[r + 1] -= (tab[r] < tab[r + 1]);
        zlicz[r + 1] += (tab[r] > tab[r + 1]);
        zlicz[r + 1] -= (tab[r + 1] > tab[r + 2]);
        zlicz[r + 1] += (tab[r + 1] < tab[r + 2]);
      }
      pam = tab[l];
      tab[l] = tab[r];
      tab[r] = pam;
      if (l >= 2) {
        zlicz[l - 1] += (tab[l - 2] < tab[l - 1]);
        zlicz[l - 1] -= (tab[l - 2] > tab[l - 1]);
        zlicz[l - 1] += (tab[l - 1] > tab[l]);
        zlicz[l - 1] -= (tab[l - 1] < tab[l]);
        wyn += (zlicz[l - 1] == 2) * tab[l - 1];
        wyn -= (zlicz[l - 1] == -2) * tab[l - 1];
      }
      zlicz[l] += (tab[l - 1] < tab[l]);
      zlicz[l] -= (tab[l - 1] > tab[l]);
      zlicz[l] += (tab[l] > tab[l + 1]);
      zlicz[l] -= (tab[l] < tab[l + 1]);
      wyn += (zlicz[l] == 2) * tab[l];
      wyn -= (zlicz[l] == -2) * tab[l];
      if (l <= n - 1) {
        zlicz[l + 1] += (tab[l] < tab[l + 1]);
        zlicz[l + 1] -= (tab[l] > tab[l + 1]);
        zlicz[l + 1] += (tab[l + 1] > tab[l + 2]);
        zlicz[l + 1] -= (tab[l + 1] < tab[l + 2]);
        wyn += (zlicz[l + 1] == 2) * tab[l + 1];
        wyn -= (zlicz[l + 1] == -2) * tab[l + 1];
      }
      if (r >= 2 && r - 1 > l + 1) {
        zlicz[r - 1] += (tab[r - 2] < tab[r - 1]);
        zlicz[r - 1] -= (tab[r - 2] > tab[r - 1]);
        zlicz[r - 1] += (tab[r - 1] > tab[r]);
        zlicz[r - 1] -= (tab[r - 1] < tab[r]);
        wyn += (zlicz[r - 1] == 2) * tab[r - 1];
        wyn -= (zlicz[r - 1] == -2) * tab[r - 1];
      }
      if (r > l + 1) {
        zlicz[r] += (tab[r - 1] < tab[r]);
        zlicz[r] -= (tab[r - 1] > tab[r]);
        zlicz[r] += (tab[r] > tab[r + 1]);
        zlicz[r] -= (tab[r] < tab[r + 1]);
        wyn += (zlicz[r] == 2) * tab[r];
        wyn -= (zlicz[r] == -2) * tab[r];
      }
      if (r <= n - 1 && r + 1 > l + 1) {
        zlicz[r + 1] += (tab[r] < tab[r + 1]);
        zlicz[r + 1] -= (tab[r] > tab[r + 1]);
        zlicz[r + 1] += (tab[r + 1] > tab[r + 2]);
        zlicz[r + 1] -= (tab[r + 1] < tab[r + 2]);
        wyn += (zlicz[r + 1] == 2) * tab[r + 1];
        wyn -= (zlicz[r + 1] == -2) * tab[r + 1];
      }
      cout << wyn << "\n";
    }
  }
  return 0;
}
