#include<bits/stdc++.h>
#include <functional>
using namespace std;
#define khalil ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
#define ordered_set tree < int , null_type , less<int> , rb_tree_tag , tree_order_statistics_node_update >
#define el "\n"
#define ll long long
#define all(v) v.begin(),v.end()
#define ld long double
#define pi acos(-1)
#define tc ll t ; cin >> t ; while (t--)
bool checkbit(int x , int i) // check the value of the ith bit 1 or 0
{
return x&(1<<i) ;
}
long long gcd(ll q, ll v)
{
if (v == 0)
return q;
return gcd(v, q % v);
}
long long lcm(ll a, ll b)
{
return ((a*b)/ gcd(a, b));
}
ll fastpower (ll base , ll exp)
{
ll res = 1 , x = base;
while(exp)
{
if(exp&1) res*=x;
exp>>=1;
x*=x;
}
return res;
}
template < typename T > istream &operator >> (istream &in, vector < T > &v) {
for (auto &x: v) in >> x;
return in;
}
template < typename T > ostream &operator << (ostream &out, vector < T > &v) {
for (auto &x: v) out << x << ' ';
return out;
}
bool comp(pair<int,int> x,pair<int,int>y)
{
return x.second<=y.second ;
}
const int N =2e4+5;
const ll mod=1e9+7;
vector<bool> prime(N,1);
void sieve (int x)
{
prime[0]=prime[1]=0;
for(int i=2;i<=x;i++)
{
if(prime[i])
{
for(int j=i+i;j<=x;j+=i)prime[j]=0;
}
}
}
ll logatob (ll a , ll b)
{
return logl(a)/logl(b) ;
}
void init()
{
}
int dx[8]={0,-1,1,-1,1,0,1,-1};
int dy[8]={1,1,1,0,0,-1,-1,-1};
int main()
{
khalil
//freopen("input.txt","r",stdin) ;
//freopen("output.txt", "w", stdout);
/*tc
{
}*/
int n;cin>>n;
cin.ignore();
cin.ignore();
while(n--)
{
int mx = INT_MIN;
string s;
vector<string> v;
map<pair<int,int>,int> mp ;
while(true)
{
getline(cin,s);
if(s=="")break;
v.push_back(s);
}
for(int i=0;i<v.size();i++)
{
for(int j=0;j<v[i].size();j++)
{
if(v[i][j]=='1' and mp[{i,j}]==0)
{
queue<pair<int,int>> q;
q.push({i,j});
mp[{i,j}]=1;
while(!q.empty())
{
pair<int,int> cur = q.front();
mx=max(mx,mp[cur]);
q.pop();
for(int i=0;i<8;i++)
{
int nx=cur.first+dx[i];
int ny=cur.second+dy[i];
if(nx>=0 and nx<v.size() and ny>=0 and ny<v[0].size() and mp[{nx,ny}]==0)
{
mp[{nx,ny}]=mp[cur]+1;
q.push({nx,ny});
}
}
}
}
}
}
cout<<mx<<el;
if(n!=0)cout<<el;
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUga2hhbGlsIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpLCBjaW4udGllKG51bGxwdHIpLCBjb3V0LnRpZShudWxscHRyKTsKI2RlZmluZSBvcmRlcmVkX3NldCB0cmVlIDwgaW50ICwgIG51bGxfdHlwZSAsICBsZXNzPGludD4gLCAgcmJfdHJlZV90YWcgLCAgdHJlZV9vcmRlcl9zdGF0aXN0aWNzX25vZGVfdXBkYXRlID4KI2RlZmluZSBlbCAiXG4iCiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgYWxsKHYpIHYuYmVnaW4oKSx2LmVuZCgpCiNkZWZpbmUgbGQgbG9uZyBkb3VibGUKI2RlZmluZSBwaSBhY29zKC0xKQojZGVmaW5lIHRjIGxsIHQgOyAgY2luID4+IHQgOyB3aGlsZSAodC0tKQpib29sIGNoZWNrYml0KGludCB4ICwgaW50IGkpIC8vIGNoZWNrIHRoZSB2YWx1ZSBvZiB0aGUgaXRoIGJpdCAxIG9yIDAKewogICAgcmV0dXJuIHgmKDE8PGkpIDsKfQpsb25nIGxvbmcgZ2NkKGxsIHEsIGxsIHYpCnsKICAgIGlmICh2ID09IDApCiAgICAgICAgcmV0dXJuIHE7CiAgICByZXR1cm4gZ2NkKHYsIHEgJSB2KTsKfQpsb25nIGxvbmcgbGNtKGxsIGEsIGxsIGIpCnsKICAgIHJldHVybiAoKGEqYikvIGdjZChhLCBiKSk7Cn0KbGwgZmFzdHBvd2VyIChsbCBiYXNlICwgbGwgZXhwKQp7CiAgICBsbCByZXMgPSAxICwgeCA9IGJhc2U7CiAgICB3aGlsZShleHApCiAgICB7CiAgICAgICAgaWYoZXhwJjEpIHJlcyo9eDsKICAgICAgICBleHA+Pj0xOwogICAgICAgIHgqPXg7CiAgICB9CiAgICByZXR1cm4gcmVzOwp9CnRlbXBsYXRlIDwgdHlwZW5hbWUgVCA+IGlzdHJlYW0gJm9wZXJhdG9yID4+IChpc3RyZWFtICZpbiwgdmVjdG9yIDwgVCA+ICZ2KSB7CiAgICBmb3IgKGF1dG8gJng6IHYpIGluID4+IHg7CiAgICByZXR1cm4gaW47Cn0KdGVtcGxhdGUgPCB0eXBlbmFtZSBUID4gb3N0cmVhbSAmb3BlcmF0b3IgPDwgKG9zdHJlYW0gJm91dCwgdmVjdG9yIDwgVCA+ICZ2KSB7CiAgICBmb3IgKGF1dG8gJng6IHYpIG91dCA8PCB4IDw8ICcgJzsKICAgIHJldHVybiBvdXQ7Cn0KYm9vbCBjb21wKHBhaXI8aW50LGludD4geCxwYWlyPGludCxpbnQ+eSkKewogICAgcmV0dXJuIHguc2Vjb25kPD15LnNlY29uZCA7Cn0KY29uc3QgaW50IE4gPTJlNCs1Owpjb25zdCBsbCBtb2Q9MWU5Kzc7CnZlY3Rvcjxib29sPiBwcmltZShOLDEpOwp2b2lkIHNpZXZlIChpbnQgeCkKewogICAgcHJpbWVbMF09cHJpbWVbMV09MDsKICAgIGZvcihpbnQgaT0yO2k8PXg7aSsrKQogICAgewogICAgICAgIGlmKHByaW1lW2ldKQogICAgICAgIHsKICAgICAgICAgICAgZm9yKGludCBqPWkraTtqPD14O2orPWkpcHJpbWVbal09MDsKICAgICAgICB9CiAgICB9Cn0KbGwgbG9nYXRvYiAobGwgYSAsIGxsIGIpCnsKICAgIHJldHVybiBsb2dsKGEpL2xvZ2woYikgOwp9CnZvaWQgaW5pdCgpCnsKfQppbnQgZHhbOF09ezAsLTEsMSwtMSwxLDAsMSwtMX07CmludCBkeVs4XT17MSwxLDEsMCwwLC0xLC0xLC0xfTsKaW50IG1haW4oKQp7CiAgICBraGFsaWwKICAgIC8vZnJlb3BlbigiaW5wdXQudHh0IiwiciIsc3RkaW4pIDsKICAgIC8vZnJlb3Blbigib3V0cHV0LnR4dCIsICJ3Iiwgc3Rkb3V0KTsKICAgIC8qdGMKICAgIHsKICAgIH0qLwogICAgaW50IG47Y2luPj5uOwogICAgY2luLmlnbm9yZSgpOwogICAgY2luLmlnbm9yZSgpOwogICAgd2hpbGUobi0tKQogICAgewogICAgICAgIGludCBteCA9IElOVF9NSU47CiAgICAgICAgc3RyaW5nIHM7CiAgICAgICAgdmVjdG9yPHN0cmluZz4gdjsKICAgICAgICBtYXA8cGFpcjxpbnQsaW50PixpbnQ+IG1wIDsKICAgICAgICB3aGlsZSh0cnVlKQogICAgICAgIHsKICAgICAgICAgICAgZ2V0bGluZShjaW4scyk7CiAgICAgICAgICAgIGlmKHM9PSIiKWJyZWFrOwogICAgICAgICAgICB2LnB1c2hfYmFjayhzKTsKICAgICAgICB9CiAgICAgICAgZm9yKGludCBpPTA7aTx2LnNpemUoKTtpKyspCiAgICAgICAgewogICAgICAgICAgICBmb3IoaW50IGo9MDtqPHZbaV0uc2l6ZSgpO2orKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYodltpXVtqXT09JzEnIGFuZCBtcFt7aSxqfV09PTApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgcXVldWU8cGFpcjxpbnQsaW50Pj4gcTsKICAgICAgICAgICAgICAgICAgICBxLnB1c2goe2ksan0pOwogICAgICAgICAgICAgICAgICAgIG1wW3tpLGp9XT0xOwogICAgICAgICAgICAgICAgICAgIHdoaWxlKCFxLmVtcHR5KCkpCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBwYWlyPGludCxpbnQ+IGN1ciA9IHEuZnJvbnQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgbXg9bWF4KG14LG1wW2N1cl0pOwogICAgICAgICAgICAgICAgICAgICAgICBxLnBvcCgpOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IoaW50IGk9MDtpPDg7aSsrKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbng9Y3VyLmZpcnN0K2R4W2ldOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG55PWN1ci5zZWNvbmQrZHlbaV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihueD49MCBhbmQgbng8di5zaXplKCkgYW5kIG55Pj0wIGFuZCBueTx2WzBdLnNpemUoKSBhbmQgbXBbe254LG55fV09PTApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXBbe254LG55fV09bXBbY3VyXSsxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHEucHVzaCh7bngsbnl9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBjb3V0PDxteDw8ZWw7CiAgICAgICAgaWYobiE9MCljb3V0PDxlbDsKICAgIH0KfQo=