#include <bits/stdc++.h>
using namespace std;
long long get(long long arr[], long long n) {
  long long ans = 0;
  for (long long i = 2; i <= n; i++) {
    if (arr[i - 1] > arr[i]) {
      ans += arr[i - 1] - arr[i];
    }
  }
  ans += arr[n];
  return ans;
}
void fun(long long arr[], long long n, long long l, long long r,
         long long &modi) {
  if (l == 1) {
    if (arr[l] > arr[l + 1]) {
      modi -= (arr[l] - arr[l + 1]);
    }
    if (arr[r] > arr[l + 1]) {
      modi += (arr[r] - arr[l + 1]);
    }
  } else if (l == n) {
    if (arr[l - 1] > arr[l]) {
      modi -= (arr[l - 1] - arr[l]);
    }
    if (arr[r] < arr[l - 1]) {
      modi += (arr[l - 1] - arr[r]);
    }
    modi -= arr[l];
    modi += arr[r];
  } else {
    if (arr[l] > arr[l + 1]) {
      modi -= (arr[l] - arr[l + 1]);
    }
    if (arr[r] > arr[l + 1]) {
      modi += (arr[r] - arr[l + 1]);
    }
    if (arr[l - 1] > arr[l]) {
      modi -= (arr[l - 1] - arr[l]);
    }
    if (arr[r] < arr[l - 1]) {
      modi += (arr[l - 1] - arr[r]);
    }
  }
}
long long get_updated(long long arr[], long long n, long long l, long long r,
                      long long ans) {
  long long modi = ans;
  if (l == r)
    return modi;
  else if (r - l == 1) {
    if (n == 2) {
      if (arr[l] > arr[r]) {
        modi -= (arr[l] - arr[r]);
      }
      if (arr[r] > arr[l]) modi += (arr[r] - arr[l]);
      modi -= arr[r];
      modi += arr[l];
      return modi;
    }
    if (l == 1) {
      if (arr[l] > arr[r]) {
        modi -= (arr[l] - arr[r]);
      } else if (arr[l] < arr[r]) {
        modi += (arr[r] - arr[l]);
      }
      if (arr[r] > arr[r + 1]) {
        modi -= (arr[r] - arr[r + 1]);
      }
      if (arr[l] > arr[r + 1]) {
        modi += (arr[l] - arr[r + 1]);
      }
    } else if (r == n) {
      if (arr[l] > arr[r]) {
        modi -= (arr[l] - arr[r]);
      } else if (arr[l] < arr[r]) {
        modi += (arr[r] - arr[l]);
      }
      if (arr[l - 1] > arr[l]) {
        modi -= (arr[l - 1] - arr[l]);
      }
      if (arr[l - 1] > arr[r]) {
        modi += (arr[l - 1] - arr[r]);
      }
      modi -= arr[r];
      modi += arr[l];
    } else {
      if (arr[l] > arr[r]) {
        modi -= (arr[l] - arr[r]);
      } else if (arr[l] < arr[r]) {
        modi += (arr[r] - arr[l]);
      }
      if (arr[r] > arr[r + 1]) {
        modi -= (arr[r] - arr[r + 1]);
      }
      if (arr[l] > arr[r + 1]) {
        modi += (arr[l] - arr[r + 1]);
      }
      if (arr[l - 1] > arr[l]) {
        modi -= (arr[l - 1] - arr[l]);
      }
      if (arr[l - 1] > arr[r]) {
        modi += (arr[l - 1] - arr[r]);
      }
    }
    return modi;
  }
  fun(arr, n, l, r, modi);
  fun(arr, n, r, l, modi);
  return modi;
}
int32_t main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  long long t;
  cin >> t;
  while (t--) {
    long long n, q;
    cin >> n >> q;
    long long arr[n + 1];
    for (long long i = 1; i <= n; i++) {
      cin >> arr[i];
    }
    long long maxi = get(arr, n);
    cout << maxi << "\n";
    ;
    while (q--) {
      long long l, r;
      cin >> l >> r;
      long long modi = get_updated(arr, n, l, r, maxi);
      swap(arr[l], arr[r]);
      maxi = modi;
      cout << modi << "\n";
    }
  }
}
