#include <iostream>
#include <queue>
using namespace std;
class node{
public:
int value,posx,posy,tems;
node()
{
tems=-1;
}
};
int main() {
int n;
cin>>n;
while(n--)
{
int a,b;
cin>>a>>b;
int arr[a][b],high=-1,count=a*b,highest_time=0;
queue<node> obs;
for(int x=0;x<a;x++)
{
for(int y=0;y<b;y++)
{
cin>>arr[x][y];
if(high==-1||arr[x][y]>high)
high=arr[x][y];
}
}
for(int x=0;x<a;x++)
{
for(int y=0;y<b;y++)
{
if(arr[x][y]==high)
{
node ob;
ob.tems=0;
ob.posx=x;
ob.posy=y;
obs.push(ob);
count--;
}
}
}
while(!obs.empty())
{
if(count==0)
break;
int curx,cury,curtems;
curx=obs.front().posx;
cury=obs.front().posy;
curtems=obs.front().tems;
if(cury>0&&arr[curx][cury-1]!=high)
{
count--;
arr[curx][cury-1]=high;
node ob;
ob.posx=curx;
ob.posy=cury-1;
ob.tems=curtems+1;
obs.push(ob);
if(highest_time==0||ob.tems>highest_time)
highest_time=ob.tems;
}
if(cury<b-1&&arr[curx][cury+1]!=high)
{
count--;
arr[curx][cury+1]=high;
node ob;
ob.posx=curx;
ob.posy=cury+1;
ob.tems=curtems+1;
obs.push(ob);
if(highest_time==0||ob.tems>highest_time)
highest_time=ob.tems;
}
if(curx>0&&arr[curx-1][cury]!=high)
{
count--;
arr[curx-1][cury]=high;
node ob;
ob.posx=curx-1;
ob.posy=cury;
ob.tems=curtems+1;
obs.push(ob);
if(highest_time==0||ob.tems>highest_time)
highest_time=ob.tems;
}
if(curx<a-1&&arr[curx+1][cury]!=high)
{
count--;
arr[curx+1][cury]=high;
node ob;
ob.posx=curx+1;
ob.posy=cury;
ob.tems=curtems+1;
obs.push(ob);
if(highest_time==0||ob.tems>highest_time)
highest_time=ob.tems;
}
if(cury>0&&curx>0&&arr[curx-1][cury-1]!=high)
{
count--;
arr[curx-1][cury-1]=high;
node ob;
ob.posx=curx-1;
ob.posy=cury-1;
ob.tems=curtems+1;
obs.push(ob);
if(highest_time==0||ob.tems>highest_time)
highest_time=ob.tems;
}
if(cury<b-1&&curx<a-1&&arr[curx+1][cury+1]!=high)
{
count--;
arr[curx+1][cury+1]=high;
node ob;
ob.posx=curx+1;
ob.posy=cury+1;
ob.tems=curtems+1;
obs.push(ob);
if(highest_time==0||ob.tems>highest_time)
highest_time=ob.tems;
}
if(cury<b-1&&curx>0&&arr[curx-1][cury+1]!=high)
{
count--;
arr[curx-1][cury+1]=high;
node ob;
ob.posx=curx-1;
ob.posy=cury+1;
ob.tems=curtems+1;
obs.push(ob);
if(highest_time==0||ob.tems>highest_time)
highest_time=ob.tems;
}
if(cury>0&&curx<a-1&&arr[curx+1][cury-1]!=high)
{
count--;
arr[curx+1][cury-1]=high;
node ob;
ob.posx=curx+1;
ob.posy=cury-1;
ob.tems=curtems+1;
obs.push(ob);
if(highest_time==0||ob.tems>highest_time)
highest_time=ob.tems;
}
obs.pop();
}
cout<<highest_time<<endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8cXVldWU+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpjbGFzcyBub2RlewpwdWJsaWM6CiAgaW50IHZhbHVlLHBvc3gscG9zeSx0ZW1zOwogIG5vZGUoKQogIHsKICAJdGVtcz0tMTsKICB9CgkKfTsKCgppbnQgbWFpbigpIHsKICAgIGludCBuOwogICAgY2luPj5uOwogICAgCiAgICB3aGlsZShuLS0pCiAgICAgewogICAgIAlpbnQgYSxiOwogICAgIAljaW4+PmE+PmI7CiAgICAgCWludCBhcnJbYV1bYl0saGlnaD0tMSxjb3VudD1hKmIsaGlnaGVzdF90aW1lPTA7CiAgICAgCQogICAgICAgIHF1ZXVlPG5vZGU+IG9iczsKICAgICAJCiAgICAgCWZvcihpbnQgeD0wO3g8YTt4KyspCiAgICAgCSB7CiAgICAgCSAJZm9yKGludCB5PTA7eTxiO3krKykKICAgICAJIAkgewogICAgIAkgCSAJY2luPj5hcnJbeF1beV07CiAgICAgCSAJIAlpZihoaWdoPT0tMXx8YXJyW3hdW3ldPmhpZ2gpCiAgICAgCSAJIAkgIGhpZ2g9YXJyW3hdW3ldOwogICAgIAkgCSB9CiAgICAgCSB9CiAgICAgCSAKICAgICAJZm9yKGludCB4PTA7eDxhO3grKykKICAgICAJIHsKICAgICAJIAlmb3IoaW50IHk9MDt5PGI7eSsrKQogICAgIAkgCSB7CiAgICAgCSAJICAgIGlmKGFyclt4XVt5XT09aGlnaCkKICAgICAJIAkgICAgIHsKICAgICAJIAkgICAgIAlub2RlIG9iOwogICAgIAkgCSAgICAgCW9iLnRlbXM9MDsKICAgICAJIAkgICAgIAlvYi5wb3N4PXg7CiAgICAgCSAJICAgICAJb2IucG9zeT15OwogICAgIAkgCSAgICAgCW9icy5wdXNoKG9iKTsKICAgICAJIAkgICAgIAljb3VudC0tOwogICAgIAkgCSAgICAgfQogICAgIAkgCSB9CiAgICAgCSB9CiAgICAgCSAKICAgICAJCiAgICAgCQogICAgIAl3aGlsZSghb2JzLmVtcHR5KCkpCiAgICAgCSB7ICAKICAgICAJIAlpZihjb3VudD09MCkKICAgICAJIAlicmVhazsKICAgICAJIAlpbnQgY3VyeCxjdXJ5LGN1cnRlbXM7CiAgICAgCSAJY3VyeD1vYnMuZnJvbnQoKS5wb3N4OwogICAgIAkgCWN1cnk9b2JzLmZyb250KCkucG9zeTsKICAgICAJIAljdXJ0ZW1zPW9icy5mcm9udCgpLnRlbXM7CiAgICAgCSAJCiAgICAgCSAgICBpZihjdXJ5PjAmJmFycltjdXJ4XVtjdXJ5LTFdIT1oaWdoKQogICAgIAkgICAgIHsKICAgICAJICAgICAJY291bnQtLTsKICAgICAJICAgICAJYXJyW2N1cnhdW2N1cnktMV09aGlnaDsKICAgICAJICAgICAJCiAgICAgCSAgICAgCW5vZGUgb2I7CiAgICAgCSAgICAgCW9iLnBvc3g9Y3VyeDsKICAgICAJICAgICAJb2IucG9zeT1jdXJ5LTE7CiAgICAgCSAgICAgCW9iLnRlbXM9Y3VydGVtcysxOwogICAgIAkgICAgIAkKICAgICAJICAgICAJb2JzLnB1c2gob2IpOwogICAgIAkgICAgIAkKICAgICAJICAgICAJaWYoaGlnaGVzdF90aW1lPT0wfHxvYi50ZW1zPmhpZ2hlc3RfdGltZSkKICAgICAJICAgICAJIGhpZ2hlc3RfdGltZT1vYi50ZW1zOwogICAgIAkgICAgIH0KICAgICAJICAgICAKICAgICAJIAlpZihjdXJ5PGItMSYmYXJyW2N1cnhdW2N1cnkrMV0hPWhpZ2gpCiAgICAgCSAJIHsKICAgICAJIAkgCWNvdW50LS07CiAgICAgCSAgICAgCWFycltjdXJ4XVtjdXJ5KzFdPWhpZ2g7CiAgICAgCSAgICAgCQogICAgIAkgICAgIAlub2RlIG9iOwogICAgIAkgICAgIAlvYi5wb3N4PWN1cng7CiAgICAgCSAgICAgCW9iLnBvc3k9Y3VyeSsxOwogICAgIAkgICAgIAlvYi50ZW1zPWN1cnRlbXMrMTsKICAgICAJICAgICAJCiAgICAgCSAgICAgCW9icy5wdXNoKG9iKTsKICAgICAJICAgICAJCiAgICAgCSAgICAgCWlmKGhpZ2hlc3RfdGltZT09MHx8b2IudGVtcz5oaWdoZXN0X3RpbWUpCiAgICAgCSAgICAgCSBoaWdoZXN0X3RpbWU9b2IudGVtczsKICAgICAJIAkgfQogICAgIAkgCSAKICAgICAJICAgaWYoY3VyeD4wJiZhcnJbY3VyeC0xXVtjdXJ5XSE9aGlnaCkKICAgICAJICAgIHsKICAgICAJICAgIAljb3VudC0tOwogICAgIAkgICAgIAlhcnJbY3VyeC0xXVtjdXJ5XT1oaWdoOwogICAgIAkgICAgIAkKICAgICAJICAgICAJbm9kZSBvYjsKICAgICAJICAgICAJb2IucG9zeD1jdXJ4LTE7CiAgICAgCSAgICAgCW9iLnBvc3k9Y3VyeTsKICAgICAJICAgICAJb2IudGVtcz1jdXJ0ZW1zKzE7CiAgICAgCSAgICAgCQogICAgIAkgICAgIAlvYnMucHVzaChvYik7CiAgICAgCSAgICAgCQogICAgIAkgICAgIAlpZihoaWdoZXN0X3RpbWU9PTB8fG9iLnRlbXM+aGlnaGVzdF90aW1lKQogICAgIAkgICAgIAkgaGlnaGVzdF90aW1lPW9iLnRlbXM7CiAgICAgCSAgICB9CiAgICAgCSAgICAKICAgICAJICAgaWYoY3VyeDxhLTEmJmFycltjdXJ4KzFdW2N1cnldIT1oaWdoKQogICAgIAkgICAgewogICAgIAkgICAgCWNvdW50LS07CiAgICAgCSAgICAgCWFycltjdXJ4KzFdW2N1cnldPWhpZ2g7CiAgICAgCSAgICAgCQogICAgIAkgICAgIAlub2RlIG9iOwogICAgIAkgICAgIAlvYi5wb3N4PWN1cngrMTsKICAgICAJICAgICAJb2IucG9zeT1jdXJ5OwogICAgIAkgICAgIAlvYi50ZW1zPWN1cnRlbXMrMTsKICAgICAJICAgICAJCiAgICAgCSAgICAgCW9icy5wdXNoKG9iKTsKICAgICAJICAgICAJCiAgICAgCSAgICAgCWlmKGhpZ2hlc3RfdGltZT09MHx8b2IudGVtcz5oaWdoZXN0X3RpbWUpCiAgICAgCSAgICAgCSBoaWdoZXN0X3RpbWU9b2IudGVtczsKICAgICAJICAgIH0KICAgICAJICAgIAogICAgIAkgICAgaWYoY3VyeT4wJiZjdXJ4PjAmJmFycltjdXJ4LTFdW2N1cnktMV0hPWhpZ2gpCiAgICAgCSAgICAgewogICAgIAkgICAgIAljb3VudC0tOwogICAgIAkgICAgIAlhcnJbY3VyeC0xXVtjdXJ5LTFdPWhpZ2g7CiAgICAgCSAgICAgCQogICAgIAkgICAgIAlub2RlIG9iOwogICAgIAkgICAgIAlvYi5wb3N4PWN1cngtMTsKICAgICAJICAgICAJb2IucG9zeT1jdXJ5LTE7CiAgICAgCSAgICAgCW9iLnRlbXM9Y3VydGVtcysxOwogICAgIAkgICAgIAkKICAgICAJICAgICAJb2JzLnB1c2gob2IpOwogICAgIAkgICAgIAkKICAgICAJICAgICAJaWYoaGlnaGVzdF90aW1lPT0wfHxvYi50ZW1zPmhpZ2hlc3RfdGltZSkKICAgICAJICAgICAJIGhpZ2hlc3RfdGltZT1vYi50ZW1zOwogICAgIAkgICAgIH0KICAgICAJICAgCiAgICAgCSAgIGlmKGN1cnk8Yi0xJiZjdXJ4PGEtMSYmYXJyW2N1cngrMV1bY3VyeSsxXSE9aGlnaCkKICAgICAJICAgIHsKICAgICAJICAgIAljb3VudC0tOwogICAgIAkgICAgIAlhcnJbY3VyeCsxXVtjdXJ5KzFdPWhpZ2g7CiAgICAgCSAgICAgCQogICAgIAkgICAgIAlub2RlIG9iOwogICAgIAkgICAgIAlvYi5wb3N4PWN1cngrMTsKICAgICAJICAgICAJb2IucG9zeT1jdXJ5KzE7CiAgICAgCSAgICAgCW9iLnRlbXM9Y3VydGVtcysxOwogICAgIAkgICAgIAkKICAgICAJICAgICAJb2JzLnB1c2gob2IpOwogICAgIAkgICAgIAkKICAgICAJICAgICAJaWYoaGlnaGVzdF90aW1lPT0wfHxvYi50ZW1zPmhpZ2hlc3RfdGltZSkKICAgICAJICAgICAJIGhpZ2hlc3RfdGltZT1vYi50ZW1zOwogICAgIAkgICAgfQogICAgIAkgICAgCiAgICAgCSAgIGlmKGN1cnk8Yi0xJiZjdXJ4PjAmJmFycltjdXJ4LTFdW2N1cnkrMV0hPWhpZ2gpCiAgICAgCSAgICB7CiAgICAgCSAgICAJY291bnQtLTsKICAgICAJICAgICAJYXJyW2N1cngtMV1bY3VyeSsxXT1oaWdoOwogICAgIAkgICAgIAkKICAgICAJICAgICAJbm9kZSBvYjsKICAgICAJICAgICAJb2IucG9zeD1jdXJ4LTE7CiAgICAgCSAgICAgCW9iLnBvc3k9Y3VyeSsxOwogICAgIAkgICAgIAlvYi50ZW1zPWN1cnRlbXMrMTsKICAgICAJICAgICAJCiAgICAgCSAgICAgCW9icy5wdXNoKG9iKTsKICAgICAJICAgICAJCiAgICAgCSAgICAgCWlmKGhpZ2hlc3RfdGltZT09MHx8b2IudGVtcz5oaWdoZXN0X3RpbWUpCiAgICAgCSAgICAgCSBoaWdoZXN0X3RpbWU9b2IudGVtczsKICAgICAJICAgIH0KICAgICAJICAgIAogICAgIAkgICBpZihjdXJ5PjAmJmN1cng8YS0xJiZhcnJbY3VyeCsxXVtjdXJ5LTFdIT1oaWdoKQogICAgIAkgICAgewogICAgIAkgICAgCWNvdW50LS07CiAgICAgCSAgICAgCWFycltjdXJ4KzFdW2N1cnktMV09aGlnaDsKICAgICAJICAgICAJCiAgICAgCSAgICAgCW5vZGUgb2I7CiAgICAgCSAgICAgCW9iLnBvc3g9Y3VyeCsxOwogICAgIAkgICAgIAlvYi5wb3N5PWN1cnktMTsKICAgICAJICAgICAJb2IudGVtcz1jdXJ0ZW1zKzE7CiAgICAgCSAgICAgCQogICAgIAkgICAgIAlvYnMucHVzaChvYik7CiAgICAgCSAgICAgCQogICAgIAkgICAgIAlpZihoaWdoZXN0X3RpbWU9PTB8fG9iLnRlbXM+aGlnaGVzdF90aW1lKQogICAgIAkgICAgIAkgaGlnaGVzdF90aW1lPW9iLnRlbXM7CiAgICAgCSAgICB9CiAgICAgCSAJCiAgICAgCSAJCiAgICAgCSAJCiAgICAgCSAJCiAgICAgCSAJb2JzLnBvcCgpOwogICAgIAkgCQogICAgIAkgfQogICAgIAkKICAgICAgICAKICAgICAJIGNvdXQ8PGhpZ2hlc3RfdGltZTw8ZW5kbDsKICAgICAJCiAgICAgfQoJcmV0dXJuIDA7Cn0=