use proconio::{fastout, input}; #[fastout] fn main() { input! { t: usize } for _ in 0..t { let ans = solve(); println!("{}", if ans { "finite" } else { "infinite" }); } } fn solve() -> bool { input! { h: usize, w: usize, a: [[i32; w]; h], } for i in 0..h { for j in 0..w { for ni in 0..i { if a[ni][j] + a[i][j] > 0 { return false; } } for nj in 0..j { if a[i][nj] + a[i][j] > 0 { return false; } } for d in 0.. { let ni = i + d; let nj = j.wrapping_sub(d); if ni >= h || nj >= w { break; } if a[ni][nj] + a[i][j] > 0 { return false; } } for d in 0.. { let ni = i.wrapping_sub(d); let nj = j + d; if ni >= h || nj >= w { break; } if a[ni][nj] + a[i][j] > 0 { return false; } } } } true }