//#include <ext/pb_ds/assoc_container.hpp>
//#include <ext/pb_ds/tree_policy.hpp>
#pragma GCC optimize("Ofast,unroll-loops")
#include <iostream>
#include <vector>
#include <set>
#include <map>
#include <iomanip>
#include <numeric>
#include <algorithm>
#include <random>
using ll = long long;
#define int ll
#define all(a) a.begin(), a.end()

using namespace std;
//using namespace __gnu_pbds;

//using odered_set = tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update>;
mt19937 rnd(0);



void solve() {
	int n, m;
	cin >> n >> m;
	vector<int> a(m);
	for (int i = 0; i < m; i++) {
		cin >> a[i];
	}
	reverse(all(a));
	int mx = 0;
	for (auto i : a) {
		mx = max(mx, i);
	}
	int cm = 0;
	if (m > n) {
		cm = (m - n + 1) / 2;
	}
	int cp = n;
	int s = 0;
	for (auto i : a) {
		if (i == mx) {
			if (cp) {
				s += i;
				cp--;
			}
			else {
				s -= i;
				cp++;
				cm--;
			}
		}
		else {
			if (cm && cp < n) {
				s -= i;
				cp++;
				cm--;
			}
			else {
				s += i;
				cp--;
			}
		}
	}
	cout << s << '\n';
}

signed main() {
	ios_base::sync_with_stdio(0);
	cin.tie(0);
#ifdef LOCAL
	auto f1 = freopen("input.txt", "r", stdin);
	auto f2 = freopen("output.txt", "w", stdout);
#endif

	int t;
	cin >> t;
	while (t--) {
		solve();
	}
}