#include using namespace std; #define ll long long #define rep(i, n) for (int i = 0; i < (int)(n); i++) template bool chmin(T& a, T b){if(a > b){a = b; return true;} return false;} template bool chmax(T& a, T b){if(a < b){a = b; return true;} return false;} const long long mod=998244353; const long long mod2=469762049; const long long mod100=1000000007; void solve(){ int H,W;cin>>H>>W; ll A[H+1][W+1]; for(int i=1;i<=H;i++){ for(int j=1;j<=W;j++){ cin>>A[i][j]; } } bool check=true; for(int i=1;i<=H;i++){ for(int j=1;j<=W;j++){ for(int k=1;k<=H;k++){ if(i==k) continue; if(A[i][j]+A[k][j]>0){ check=false; break; } } for(int k=1;k<=W;k++){ if(j==k) continue; if(A[i][j]+A[i][k]>0){ check=false; break; } } int x=i,y=j; while(x>1 && y>1){ x--;y--; if(A[i][j]+A[x][y]>0){ check=false; break; } } x=i,y=j; while(x0){ check=false; break; } } x=i,y=j; while(x1){ x++;y--; if(A[i][j]+A[x][y]>0){ check=false; break; } } x=i,y=j; while(x>1 && y0){ check=false; break; } } } } if(check) cout<<"finite"<sync_with_stdio(0); cin.tie(0); int T;cin>>T; while(T--) solve(); }