t = int(input())
while t > 0:
N=int(input())
grid=[[int(x) for x in input().split()] for _ in range(N)]
class Node:
def __init__(self,prev,next,x,y):
self.prev=prev
self.next=next
self.x=x
self.y=y
rear=None
front=None
for i in range(len(grid)):
for j in range(len(grid[0])):
if grid[i][j] == 1:
if rear == None:
new=Node(None,None,i,j)
front = new
rear = new
else:
new=Node(rear,None,i,j)
rear.next=new
rear=new
stop=rear
count=0
while front != None:
x,y=front.x,front.y
if y+1 < N:
if grid[x][y+1] == 0:
grid[x][y+1]=1
new=Node(rear,None,x,y+1)
rear.next=new
rear=new
if grid[x][y+1] == 2:
break
if y > 0:
if grid[x][y-1] == 0:
grid[x][y-1]=1
new=Node(rear,None,x,y-1)
rear.next=new
rear=new
if grid[x][y-1] == 2:
break
if x+1 < N:
if grid[x+1][y] == 0:
grid[x+1][y]=1
new=Node(rear,None,x+1,y)
rear.next=new
rear=new
if grid[x+1][y] == 2:
break
if x > 0:
if grid[x-1][y] == 0:
grid[x-1][y]=1
new=Node(rear,None,x-1,y)
rear.next=new
rear=new
if grid[x-1][y]==2:
break
if front == stop and front != rear:
count+=1
stop=rear
front=front.next
print(count+1)
t = t - 1
dCA9IGludChpbnB1dCgpKQp3aGlsZSB0ID4gMDoKCU49aW50KGlucHV0KCkpCglncmlkPVtbaW50KHgpIGZvciB4IGluIGlucHV0KCkuc3BsaXQoKV0gZm9yIF8gaW4gcmFuZ2UoTildCgkKCWNsYXNzIE5vZGU6CgkgICAgZGVmIF9faW5pdF9fKHNlbGYscHJldixuZXh0LHgseSk6CgkgICAgICAgIHNlbGYucHJldj1wcmV2CgkgICAgICAgIHNlbGYubmV4dD1uZXh0CgkgICAgICAgIHNlbGYueD14CgkgICAgICAgIHNlbGYueT15CgkKCXJlYXI9Tm9uZQoJZnJvbnQ9Tm9uZQoJCglmb3IgaSBpbiByYW5nZShsZW4oZ3JpZCkpOgoJICAgIGZvciBqIGluIHJhbmdlKGxlbihncmlkWzBdKSk6CgkgICAgICAgIGlmIGdyaWRbaV1bal0gPT0gMToKCSAgICAgICAgICAgIGlmIHJlYXIgPT0gTm9uZToKCSAgICAgICAgICAgICAgICBuZXc9Tm9kZShOb25lLE5vbmUsaSxqKQoJICAgICAgICAgICAgICAgIGZyb250ID0gbmV3CgkgICAgICAgICAgICAgICAgcmVhciA9IG5ldwoJICAgICAgICAgICAgZWxzZToKCSAgICAgICAgICAgICAgICBuZXc9Tm9kZShyZWFyLE5vbmUsaSxqKQoJICAgICAgICAgICAgICAgIHJlYXIubmV4dD1uZXcKCSAgICAgICAgICAgICAgICByZWFyPW5ldwoJc3RvcD1yZWFyCgljb3VudD0wCgl3aGlsZSBmcm9udCAhPSBOb25lOgoJICAgIHgseT1mcm9udC54LGZyb250LnkKCSAgICBpZiB5KzEgPCBOOgoJICAgICAgICBpZiBncmlkW3hdW3krMV0gPT0gMDoKCSAgICAgICAgICAgIGdyaWRbeF1beSsxXT0xCgkgICAgICAgICAgICBuZXc9Tm9kZShyZWFyLE5vbmUseCx5KzEpCgkgICAgICAgICAgICByZWFyLm5leHQ9bmV3CgkgICAgICAgICAgICByZWFyPW5ldwoJICAgICAgICBpZiBncmlkW3hdW3krMV0gPT0gMjoKCSAgICAgICAgICAgIGJyZWFrCgkgICAgaWYgeSA+IDA6CgkgICAgICAgIGlmIGdyaWRbeF1beS0xXSA9PSAwOgoJICAgICAgICAgICAgZ3JpZFt4XVt5LTFdPTEKCSAgICAgICAgICAgIG5ldz1Ob2RlKHJlYXIsTm9uZSx4LHktMSkKCSAgICAgICAgICAgIHJlYXIubmV4dD1uZXcKCSAgICAgICAgICAgIHJlYXI9bmV3CgkgICAgICAgIGlmIGdyaWRbeF1beS0xXSA9PSAyOgoJICAgICAgICAgICAgYnJlYWsKCSAgICAKCSAgICBpZiB4KzEgPCBOOgoJICAgICAgICBpZiBncmlkW3grMV1beV0gPT0gMDoKCSAgICAgICAgICAgIGdyaWRbeCsxXVt5XT0xCgkgICAgICAgICAgICBuZXc9Tm9kZShyZWFyLE5vbmUseCsxLHkpCgkgICAgICAgICAgICByZWFyLm5leHQ9bmV3CgkgICAgICAgICAgICByZWFyPW5ldwoJICAgICAgICBpZiBncmlkW3grMV1beV0gPT0gMjoKCSAgICAgICAgICAgIGJyZWFrCgkgICAgaWYgeCA+IDA6CgkgICAgICAgIGlmIGdyaWRbeC0xXVt5XSA9PSAwOgoJICAgICAgICAgICAgZ3JpZFt4LTFdW3ldPTEKCSAgICAgICAgICAgIG5ldz1Ob2RlKHJlYXIsTm9uZSx4LTEseSkKCSAgICAgICAgICAgIHJlYXIubmV4dD1uZXcKCSAgICAgICAgICAgIHJlYXI9bmV3CgkgICAgICAgIGlmIGdyaWRbeC0xXVt5XT09MjoKCSAgICAgICAgICAgIGJyZWFrCgkgICAgaWYgZnJvbnQgPT0gc3RvcCBhbmQgZnJvbnQgIT0gcmVhcjoKCSAgICAgICAgY291bnQrPTEKCSAgICAgICAgc3RvcD1yZWFyCgkgICAgZnJvbnQ9ZnJvbnQubmV4dAoJcHJpbnQoY291bnQrMSkKCXQgPSB0IC0gMQ==