//#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));
	vector<int> dp(n + 1, -1e18);
	dp[n] = 0;
	for (int i = 0; i < m; i++) {
		vector<int> dp1(n + 1, -1e18);
		for (int cp = 0; cp <= n; cp++) {
			if (cp) {
				dp1[cp - 1] = max(dp1[cp - 1], dp[cp] + a[i]);
			}
			if (cp != n) {
				dp1[cp + 1] = max(dp1[cp + 1], dp[cp] - a[i]);
			}
		}
		dp = dp1;
	}
	int ans = -1e18;
	for (int i = 0; i <= n; i++) {
		ans = max(ans, dp[i]);
	}
	cout << ans << '\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();
	}
}