#include<stdio.h>
#include<algorithm>
using namespace std;
short dp[5010][60][60];
int g[60][60];
int n;
int solve(int a,int b,int c){
	if(dp[a][b][c]>=0)return dp[a][b][c];
	if(b==c)return dp[a][b][c]=a;
	if(a==2*n){
		return dp[a][b][c]=a;
	}
	if(a%2==0){
		int ret=0;
		for(int i=0;i<n;i++){
			if(g[b][i]){
				ret=max(ret,solve(a+1,i,c));
			}
		}
	//	printf("%d %d %d: %d\n",a,b,c,ret);
		return dp[a][b][c]=ret;
	}else{
		int ret=2*n;
		for(int i=0;i<n;i++){
			if(g[c][i])ret=min(ret,solve(a+1,b,i));
		}
	//	printf("%d %d %d: %d\n",a,b,c,ret);
		return dp[a][b][c]=ret;
	}
}
int main(){
	int T;scanf("%d",&T);
	while(T--){
		int a;scanf("%d",&a);
		n=a;
		for(int i=0;i<a;i++)for(int j=0;j<a;j++)scanf("%d",&g[i][j]);
		for(int i=0;i<=2*a;i++)for(int j=0;j<a;j++)for(int k=0;k<a;k++)dp[i][j][k]=-1;
		for(int i=0;i<a;i++)g[i][i]=1;
		int s,t;scanf("%d%d",&s,&t);
		solve(0,s,t);
		int ret=solve(0,s,t)/2;
		if(ret==a)printf("infinity\n");
		else printf("%d\n",ret);
	}
}