#include <bits/stdc++.h>
using namespace std;
namespace IO {
void setIn(string s) { freopen(s.c_str(), "r", stdin); }
void setOut(string s) { freopen(s.c_str(), "w", stdout); }
void setIO(string s = "") {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin.exceptions(cin.failbit);
  if (s.size()) {
    setIn(s + ".inp");
    setOut(s + ".out");
  } else {
  }
}
}  // namespace IO
using namespace IO;
namespace Function {
template <typename T1, typename T2>
void amax(T1 &a, T2 b) {
  assert(!(typeid(a).name() == typeid(int).name() &&
           typeid(b).name() == typeid(long long).name()));
  if (a < b) a = b;
}
template <typename T1, typename T2>
void amin(T1 &a, T2 b) {
  if (a > b) a = b;
}
template <typename T>
void compress(T &a) {
  sort(a.begin(), a.end());
  a.resize(unique(a.begin(), a.end()) - a.begin());
}
template <typename T>
long long sqr(T x) {
  return 1LL * x * x;
}
template <typename T1, typename T2>
long long gcd(T1 a, T2 b) {
  return (b == 0 ? a : gcd(b, a % b));
}
template <typename T1, typename T2>
long long lcm(T1 a, T2 b) {
  return 1LL * a / gcd(a, b) * b;
}
}  // namespace Function
using namespace Function;
namespace Output {
void print(int x) { cout << x << "\n"; }
void print(unsigned int x) { cout << x << "\n"; }
void print(long unsigned int x) { cout << x << "\n"; }
void print(long long x) { cout << x << "\n"; }
void print(unsigned long long x) { cout << x << "\n"; }
void print(float x) { cout << x << "\n"; }
void print(double x) { cout << x << "\n"; }
void print(long double x) { cout << x << "\n"; }
void print(char x) { cout << x << "\n"; }
void print(const char *x) { cout << x << "\n"; }
void print(string x) { cout << x << "\n"; }
void print(bool x) { cout << x << "\n"; }
template <class T, class... Ts>
void print(T t, Ts... ts) {
  cout << t << " ";
  print(ts...);
}
template <typename T1, typename T2>
void print(pair<T1, T2> a) {
  print(a.first, a.second);
}
template <typename T>
void print(T a) {
  for (auto it : a) {
    print(it);
  }
}
template <class T, class... Ts>
void prine(T t, Ts... ts) {
  print(t, ts...);
  exit(0);
}
}  // namespace Output
using namespace Output;
const int dx[] = {1, -1, 0, 0};
const int dy[] = {0, 0, 1, -1};
const int INF = 1e9;
const long long INFL = 1e18;
const int MOD = 1e9 + 7;
const int N = 1e2 + 10;
long long a[N][N];
int main() {
  setIO();
  int T;
  cin >> T;
  while (T--) {
    int n, m;
    cin >> n >> m;
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < m; j++) {
        cin >> a[i][j];
      }
    }
    long long base = a[0][0];
    long long res = INFL;
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < m; j++) {
        if (a[i][j] - i - j > base) {
          continue;
        }
        vector<vector<long long>> dp(n, vector<long long>(m, INFL));
        dp[0][0] = base - (a[i][j] - i - j);
        a[0][0] = a[i][j] - i - j;
        for (int x = 0; x < n; x++) {
          for (int y = 0; y < m; y++) {
            if (a[0][0] + x + y > a[x][y]) {
              continue;
            }
            if (x > 0) {
              amin(dp[x][y], dp[x - 1][y] + a[x][y] - (a[0][0] + x + y));
            }
            if (y > 0) {
              amin(dp[x][y], dp[x][y - 1] + a[x][y] - (a[0][0] + x + y));
            }
          }
        }
        amin(res, dp[n - 1][m - 1]);
      }
    }
    print(res);
  }
  return 0;
}
