#include using namespace std; using ll = long long; int main(){ ios::sync_with_stdio(false); cin.tie(0); int t; cin >> t; while(t--){ int h, w; cin >> h >> w; vector> a(h, vector(w)); for(auto &&ee: a){ for(auto &&e: ee) cin >> e; } bool b = false; for(int i = 0; i < h; ++i){ for(int j = 0; j < w; ++j){ //縦 for(int k = 0; k < h; ++k){ if(i == k) continue; if(a[i][j] + a[k][j]> 0){ cout << "infinite" << '\n'; b = true; break; } } if(b) break; //横 for(int k = 0; k < w; ++k){ if(j == k) continue; if(a[i][j] + a[i][k] > 0){ cout << "infinite" << '\n'; b = true; break; } } if(b) break; //左上から斜め右下 int c = 1; while(i+c 0){ cout << "infinite" << '\n'; b = true; break; } ++c; } if(b) break; c = 1; while(i-c>=0 && j-c>=0){ if(a[i][j] + a[i-c][j-c] > 0){ cout << "infinite" << '\n'; b = true; break; } ++c; } if(b) break; //右上から斜め左下 c = 1; while(i+c=0){ if(a[i][j] + a[i+c][j-c] > 0){ cout << "infinite" << '\n'; b = true; break; } ++c; } if(b) break; c = 1; while(i-c>=0 && j+c 0){ cout << "infinite" << '\n'; b = true; break; } ++c; } if(b) break; } if(b) break; } if(!b) cout << "finite" << '\n'; } return 0; }