#include <bits/stdc++.h>
using namespace std;
int main(int argc, char *argv[]) {
  ios::sync_with_stdio(false);
  cin.tie(0);
  int t;
  cin >> t;
  while (t--) {
    int n, m;
    cin >> n >> m;
    vector<vector<int> > a(n, vector<int>(m));
    vector<pair<int, int> > b;
    for (int i = 0; i < n; i++)
      for (int j = 0; j < m; j++) {
        cin >> a[i][j];
        b.push_back(make_pair(-a[i][j], j));
      }
    int count = 0;
    vector<int> c(m);
    sort(b.begin(), b.end());
    for (int i = 0; i < b.size(); i++)
      if (c[b[i].second] == 0) {
        count++;
        c[b[i].second] = 1;
        if (count == n) break;
      }
    vector<int> dp((1 << n));
    for (int j = 0; j < m; j++) {
      if (!c[j]) continue;
      vector<int> tmp(1 << n);
      for (int s = 0; s < n; s++) {
        for (int x = 0; x < (1 << n); x++) {
          int sum = 0, mask = 0;
          for (int i = 0; i < n; i++)
            if ((1 << i) & x) sum += a[(i + s) % n][j];
          tmp[x] = max(tmp[x], sum);
        }
      }
      vector<int> dp2((1 << n));
      for (int p = 0; p < (1 << n); p++)
        for (int q = p; q < (1 << n); q = (q + 1) | p)
          dp2[q] = max(dp2[q], dp[q ^ p] + tmp[p]);
      dp = dp2;
    }
    cout << dp[(1 << n) - 1] << endl;
  }
  return 0;
}
