#ifndef LOCAL
#pragma GCC optimize("Ofast")
#endif

#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef long double ld;

#define X first
#define Y second

int n, m;
vector<ll> a;

multiset<ll> mn;
multiset<ll, greater<>> mx;

ll ans;
void rec(int i)
{
    if (i == m) {
        ll cur = 0;
        for (int i : mn)
            cur += i;
        ans = max(ans, cur);
        return;
    }
    int mne = *mn.begin();
    mn.extract(mne);
    mx.extract(mne);
    mn.insert(a[i] - mne);
    mx.insert(a[i] - mne);
    rec(i + 1);
    mn.extract(a[i] - mne);
    mx.extract(a[i] - mne);
    mn.insert(mne);
    mx.insert(mne);
    int mxe = *mx.begin();
    mn.extract(mxe);
    mx.extract(mxe);
    mn.insert(a[i] - mxe);
    mx.insert(a[i] - mxe);
    rec(i + 1);
    mn.extract(a[i] - mxe);
    mx.extract(a[i] - mxe);
    mn.insert(mxe);
    mx.insert(mxe);
}

void solve()
{
    ans = INT64_MIN;
    a.resize(0);
    mn = {};
    mx = {};
    cin >> n >> m;
    a.resize(m);
    for (ll& i : a)
        cin >> i;
    // vector dp(m, array<vector<ll>, 2> { { vector<ll>(n, 0), vector<ll>(n, 0) } });
    // dp[0][0][0] = a[0];
    // dp[0][0][1] = a[0];
    // for (int i = 1; i < m; i++) {
    //     auto cur1 = *min_element()
    // }
    for (int i = 0; i < n; i++) {
        mn.insert(0);
        mx.insert(0);
    }
    rec(0);
    cout << ans << '\n';
}

signed main()
{
#ifdef LOCAL
    freopen("TEST", "r", stdin);
#endif
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int ttt = 1;
    cin >> ttt;
    while (ttt--)
        solve();
}
