#include <bits/stdc++.h>
// #include<ext/pb_ds/assoc_container.hpp>
// #include<ext/pb_ds/tree_policy.hpp>
using namespace std;
// using namespace __gnu_pbds;
#define fast_io ios_base::sync_with_stdio(false); cin.tie(NULL);
#define ll long long
#define int ll
#define endll "\n"
#define read(x) int x; cin>>x;
#define pb push_back
#define eb emplace_back
#define mp make_pair
#define ff first
#define ss second
#define all(x) (x).begin(), (x).end()
#define py cout << "YES\n"
#define pn cout << "NO\n"
#define fr(i, a, b) for (int i = a; i < b; i++)
#define fer(i, a, b) for (int i = a; i <= b; i++)
#define frr(i, a, b) for (int i = a; i >= b; i--)
#define rev(v) v.rbegin(), v.rend()
#define sz(v) (int)v.size()
#define vecin(v, n) vll v(n); for (int &x : v) cin >> x
#define vecin1(v, n) vll v(n + 1); v[0] = 0; fer (i, 1, n) cin >> v[i]
#define vecp(v) { for (auto x : v) cout << x << ' '; cout << endl; }
using vll = vector<int>;
using vbl = vector<bool>;
using pll = pair<int, int>;
using vpll = vector<pll>;
using vvll = vector<vll>;
using vgr = vector<vpll>;
using stll = set<int>;
using mpll = map<int, int>;
using mpvll = map<int, vll>;
// typedef tree<ll, null_type, less<ll>, rb_tree_tag, tree_order_statistics_node_update> pbds;
// a.find_by_order(num) iterator dega uss no ka , a.order_of_key(num)(number of element smaller that that num)
#define inf numeric_limits<long long>::max()
const long long MOD = 1000000007;
long long power(long long a, long long b)
{
long long res = 1;
while (b) {
if (b & 1) res = res * a;
a = a * a;
b >>= 1;
}
return res;
}
bool sortByCond(const pair<ll, ll> &a, const pair<ll, ll> &b)
{
/*
if (a.ff == b.ff)
return a.ss < b.ss;
else
return a.ff < b.ff;
*/
return a.ss < b.ss;
}
vector<int> divisors(int num)
{
vector<int>d;
fer(i,1,sqrt(num))
{
if(num % i == 0)d.pb(i);
if(i != num/i)d.pb(num/i);
}
return d;
}
bool bfs(int num,vvll &v)
{
int n = v.size();
int m = v[0].size();
queue<pair<int,int>>q;
vector<vbl>vis(n,vbl(m,0));
q.push({0,0});
int dx[] = {1,0};
int dy[] = {0,1};
vis[0][0] = 1;
while (!q.empty())
{
int x = q.front().ff;
int y = q.front().ss;
q.pop();
fr(i,0,2)
{
int nx = x + dx[i];
int ny = y + dy[i];
if(nx < n && ny < m && !vis[nx][ny] && v[nx][ny]%num == 0)
{
if(nx == n-1 && ny == m-1)return true;
vis[nx][ny] = 1;
q.push({nx,ny});
}
}
}
return false;
}
void solve()
{
int n,m;
cin>>n>>m;
vvll v(n, vll(m, 0));
fr(i,0,n)
{
fr(j,0,m)
{
cin>>v[i][j];
}
}
vll div = divisors(__gcd(v[0][0],v[n-1][m-1]));
int val = sqrt(__gcd(v[0][0],v[n-1][m-1]));
int ans = 1;
if (sqrt(val)==(int)sqrt(val))
if(bfs(sqrt(val),v))ans = max(ans,val);
sort(all(div));
frr(i,div.size()-1,0)
{
if(bfs(div[i],v))
{
ans = max(div[i],ans);
break;
}
}
cout<<ans<<endll;
}
int32_t main()
{
fast_io;
int t = 1;
cin >> t;
fer (i, 1, t)
{
// cout << "Test Case " << i << endl;
solve();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Ci8vICNpbmNsdWRlPGV4dC9wYl9kcy9hc3NvY19jb250YWluZXIuaHBwPgovLyAjaW5jbHVkZTxleHQvcGJfZHMvdHJlZV9wb2xpY3kuaHBwPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwovLyB1c2luZyBuYW1lc3BhY2UgX19nbnVfcGJkczsKI2RlZmluZSBmYXN0X2lvIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyBjaW4udGllKE5VTEwpOwojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIGludCBsbAojZGVmaW5lIGVuZGxsICJcbiIKI2RlZmluZSByZWFkKHgpIGludCB4OyBjaW4+Png7CiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgZWIgZW1wbGFjZV9iYWNrCiNkZWZpbmUgbXAgbWFrZV9wYWlyCiNkZWZpbmUgZmYgZmlyc3QKI2RlZmluZSBzcyBzZWNvbmQKI2RlZmluZSBhbGwoeCkgKHgpLmJlZ2luKCksICh4KS5lbmQoKQojZGVmaW5lIHB5IGNvdXQgPDwgIllFU1xuIgojZGVmaW5lIHBuIGNvdXQgPDwgIk5PXG4iCiNkZWZpbmUgZnIoaSwgYSwgYikgZm9yIChpbnQgaSA9IGE7IGkgPCBiOyBpKyspCiNkZWZpbmUgZmVyKGksIGEsIGIpIGZvciAoaW50IGkgPSBhOyBpIDw9IGI7IGkrKykKI2RlZmluZSBmcnIoaSwgYSwgYikgZm9yIChpbnQgaSA9IGE7IGkgPj0gYjsgaS0tKQojZGVmaW5lIHJldih2KSB2LnJiZWdpbigpLCB2LnJlbmQoKQojZGVmaW5lIHN6KHYpIChpbnQpdi5zaXplKCkKI2RlZmluZSB2ZWNpbih2LCBuKSB2bGwgdihuKTsgZm9yIChpbnQgJnggOiB2KSBjaW4gPj4geAojZGVmaW5lIHZlY2luMSh2LCBuKSB2bGwgdihuICsgMSk7IHZbMF0gPSAwOyBmZXIgKGksIDEsIG4pIGNpbiA+PiB2W2ldCiNkZWZpbmUgdmVjcCh2KSB7IGZvciAoYXV0byB4IDogdikgY291dCA8PCB4IDw8ICcgJzsgY291dCA8PCBlbmRsOyB9CnVzaW5nIHZsbCA9IHZlY3RvcjxpbnQ+Owp1c2luZyB2YmwgPSB2ZWN0b3I8Ym9vbD47CnVzaW5nIHBsbCA9IHBhaXI8aW50LCBpbnQ+Owp1c2luZyB2cGxsID0gdmVjdG9yPHBsbD47CnVzaW5nIHZ2bGwgPSB2ZWN0b3I8dmxsPjsKdXNpbmcgdmdyID0gdmVjdG9yPHZwbGw+Owp1c2luZyBzdGxsID0gc2V0PGludD47CnVzaW5nIG1wbGwgPSBtYXA8aW50LCBpbnQ+Owp1c2luZyBtcHZsbCA9IG1hcDxpbnQsIHZsbD47Ci8vIHR5cGVkZWYgdHJlZTxsbCwgbnVsbF90eXBlLCBsZXNzPGxsPiwgcmJfdHJlZV90YWcsIHRyZWVfb3JkZXJfc3RhdGlzdGljc19ub2RlX3VwZGF0ZT4gcGJkczsgCi8vIGEuZmluZF9ieV9vcmRlcihudW0pIGl0ZXJhdG9yIGRlZ2EgdXNzIG5vIGthICwgYS5vcmRlcl9vZl9rZXkobnVtKShudW1iZXIgb2YgZWxlbWVudCBzbWFsbGVyIHRoYXQgdGhhdCBudW0pCiAKI2RlZmluZSBpbmYgbnVtZXJpY19saW1pdHM8bG9uZyBsb25nPjo6bWF4KCkKY29uc3QgbG9uZyBsb25nIE1PRCA9IDEwMDAwMDAwMDc7CgoKCgpsb25nIGxvbmcgcG93ZXIobG9uZyBsb25nIGEsIGxvbmcgbG9uZyBiKQp7CiAgICBsb25nIGxvbmcgcmVzID0gMTsKICAgIHdoaWxlIChiKSB7CiAgICAgICAgaWYgKGIgJiAxKSByZXMgPSByZXMgKiBhOwogICAgICAgIGEgPSBhICogYTsKICAgICAgICBiID4+PSAxOwogICAgfQogICAgcmV0dXJuIHJlczsKfQoKCgpib29sIHNvcnRCeUNvbmQoY29uc3QgcGFpcjxsbCwgbGw+ICZhLCBjb25zdCBwYWlyPGxsLCBsbD4gJmIpCnsKICAgIC8qCiAgICAgICAgaWYgKGEuZmYgPT0gYi5mZikKICAgICAgICAgICAgcmV0dXJuIGEuc3MgPCBiLnNzOwogICAgICAgIGVsc2UKICAgICAgICAgICAgcmV0dXJuIGEuZmYgPCBiLmZmOwogICAgKi8KICAgIHJldHVybiBhLnNzIDwgYi5zczsKfQoKCnZlY3RvcjxpbnQ+IGRpdmlzb3JzKGludCBudW0pCnsKICAgIHZlY3RvcjxpbnQ+ZDsKICAgIGZlcihpLDEsc3FydChudW0pKQogICAgewogICAgICAgIGlmKG51bSAlIGkgPT0gMClkLnBiKGkpOwogICAgICAgIGlmKGkgIT0gbnVtL2kpZC5wYihudW0vaSk7CiAgICB9CgogICAgcmV0dXJuIGQ7Cn0KCgpib29sIGJmcyhpbnQgbnVtLHZ2bGwgJnYpCnsKICAgIGludCBuID0gdi5zaXplKCk7CiAgICBpbnQgbSA9IHZbMF0uc2l6ZSgpOwogICAgcXVldWU8cGFpcjxpbnQsaW50Pj5xOwogICAgdmVjdG9yPHZibD52aXMobix2YmwobSwwKSk7CiAgICBxLnB1c2goezAsMH0pOwogICAgaW50IGR4W10gPSB7MSwwfTsKICAgIGludCBkeVtdID0gezAsMX07CiAgICB2aXNbMF1bMF0gPSAxOwogICAgd2hpbGUgKCFxLmVtcHR5KCkpCiAgICB7CiAgICAgICAgaW50IHggPSBxLmZyb250KCkuZmY7CiAgICAgICAgaW50IHkgPSBxLmZyb250KCkuc3M7CiAgICAgICAgcS5wb3AoKTsKICAgICAgICBmcihpLDAsMikKICAgICAgICB7CiAgICAgICAgICAgIGludCBueCA9IHggKyBkeFtpXTsKICAgICAgICAgICAgaW50IG55ID0geSArIGR5W2ldOwogICAgICAgICAgICBpZihueCA8IG4gJiYgbnkgPCBtICYmICF2aXNbbnhdW255XSAmJiB2W254XVtueV0lbnVtID09IDApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGlmKG54ID09IG4tMSAmJiBueSA9PSBtLTEpcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICB2aXNbbnhdW255XSA9IDE7CiAgICAgICAgICAgICAgICBxLnB1c2goe254LG55fSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBmYWxzZTsKfQoKCnZvaWQgc29sdmUoKQp7CiAgICBpbnQgbixtOwogICAgY2luPj5uPj5tOwogICAgdnZsbCB2KG4sIHZsbChtLCAwKSk7CiAgICBmcihpLDAsbikKICAgIHsKICAgICAgICBmcihqLDAsbSkKICAgICAgICB7CiAgICAgICAgICAgIGNpbj4+dltpXVtqXTsKICAgICAgICB9CiAgICB9CiAgICB2bGwgZGl2ID0gZGl2aXNvcnMoX19nY2QodlswXVswXSx2W24tMV1bbS0xXSkpOwogICAgaW50IHZhbCA9IHNxcnQoX19nY2QodlswXVswXSx2W24tMV1bbS0xXSkpOwogICAgaW50IGFucyA9IDE7CiAgICBpZiAoc3FydCh2YWwpPT0oaW50KXNxcnQodmFsKSkKICAgICAgICAgICAgaWYoYmZzKHNxcnQodmFsKSx2KSlhbnMgPSBtYXgoYW5zLHZhbCk7CiAgICBzb3J0KGFsbChkaXYpKTsKICAgIGZycihpLGRpdi5zaXplKCktMSwwKQogICAgewogICAgICAgIGlmKGJmcyhkaXZbaV0sdikpCiAgICAgICAgewogICAgICAgICAgICBhbnMgPSBtYXgoZGl2W2ldLGFucyk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgIH0KICAgIGNvdXQ8PGFuczw8ZW5kbGw7Cn0KCgoKCmludDMyX3QgbWFpbigpCnsKICAgIGZhc3RfaW87CiAgICBpbnQgdCA9IDE7CiAgICBjaW4gPj4gdDsKICAgIGZlciAoaSwgMSwgdCkKICAgIHsKICAgICAgICAvLyBjb3V0IDw8ICJUZXN0IENhc2UgIiA8PCBpIDw8IGVuZGw7CiAgICAgICAgc29sdmUoKTsKICAgIH0KICAgIHJldHVybiAwOwp9