#include <bits/stdc++.h>
#define pb push_back
#define endl "\n"
#define int long long
using namespace std;
typedef pair<int, int> pii;
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;

void upd(int &x, int y){
    if (x < y) x = y;
}


void solve(){
    int n, m;
    cin >> n >> m;
    vector<int> x(m);
    int sum = 0;
    for (int i = 0; i < m; ++i){
        cin >> x[i];
        sum += x[i];
    }
    int flag = 0;
    if (flag){
        // x[i] = x[j];
        if (n >= m){
            cout << x[0] * m << endl;
            return;
        }
        if ((m - n) % 2 == 0) {
            cout << x[0] * n << endl;
            return;
        } else{
            cout << x[0] * (n - 1) << endl;
            return;
        }

    }
    if (m >= n){
        cout << sum << endl;
        return;
    }
    reverse(x.begin(), x.end());
    int inf = 1e18;
    
    
    int ans = 0;
    sort(x.begin(), x.end());
    for (int i = m - n; i < m; ++i){
        ans += x[i];
    }
    int j = m - n - 1;
    int i = 0;
    while (j >= i){
        if (j == i) {
            ans -= x[i];
            i++;
        } else{
            ans -= x[i++];
            ans += x[j++];
        }
    }
    cout << ans << endl;
    
    
    
    
    
//    vector<vector<int>> dp(m + 1, vector<int> (n + 1, -inf));
//    dp[0][n] = 0;
//    for (int i = 0; i < m; ++i){
//        for (int k = 0; k <= n; ++k){
//            if (k != 0){
//                upd(dp[i + 1][k - 1], dp[i][k] + x[i]);
//            }
//            if (k != n){
//                upd(dp[i + 1][k + 1], dp[i][k] - x[i]);
//            }
//        }
//    }
//    int ans = -inf;
//    for (int k = 0; k <= n; ++k){
//        upd(ans, dp[m][k]);
//    }
//    cout << ans << endl;
}



signed main(){
    ios_base::sync_with_stdio(0); cin.tie(0);
    int t = 1;
    cin >> t;
    while (t--){
        solve();
    }
}