선형대수학과 응용

음이 아닌 정수로 이루어진 희소 행렬 A가 주어질 때, A+A^2+...+A^k의 모든 항이 양수가 되는 최소 k를 구하고, 그런 k가 없으면 0을 출력합니다.

어려움8그래프BFS행렬아직 제출이 없습니다시간 제한2초메모리 제한256 MB

문제

선형대수학을 수강하는 기념으로 청응이가 효원이에게 n×nn\times n 행렬 AA를 선물해줬다. 계산하기 편하라고 모든 항은 음이 아닌 정수이며, 0이 아닌 항이 5n5n개 이하인 행렬을 줬다. 선형대수학을 수강하는 기대속에 효원이는 A2A^2을 계산해봤고, 보니 A+A2A+A^2AA보다 0인 항의 개수가 작거나 같다는 것을 확인했다. 마찬가지로 A+A2+A3A+A^2+A^3A+A2A+A^2보다 00인 항의 개수가 작거나 같았다. 효원이는 이런 고민에 빠지게 되었다.

"어떤 kk가 존재해서 A+A2++AkA+A^2+\cdots+A^k00인 항이 아예 없을수도 있을까? 그런 kk가 존재한다면 최솟값은 얼마일까?"

효원이는 청응이에게 이걸 물어봤더니 "kk가 존재한다면 Cayley-Hamilton 정리에 따라 nn보다 작거나 같을 건데..."라는 대답을 받았다. 이 답변에 만족하지 않은 효원이를 위해, kk가 존재하는지, 존재한다면 최솟값을 출력하는 프로그램을 작성하시오.

입력

첫 줄에는 행렬의 크기 nn이 주어지며, 5n1,0005\leq n\leq 1,000을 만족한다.

둘째 줄부터 (n+1)(n+1)번째 줄에 걸쳐 n×nn\times n 행렬 AA가 주어진다. 각 줄에는 nn개의 정수가 공백으로 구분되어 주어지며, (i+1)(i+1)번째 줄의 jj번째 수가 a_ija\_{ij}에 해당한다. 각 항은 0a_ij1090\leq a\_{ij}\leq 10^9을 만족하며, a_ija\_{ij}00보다 큰 항이 5n5n개 이하이다.

출력

조건을 만족하는 kk가 존재한다면 최소 kk를 출력하시오. 조건을 만족하는 kk가 없다면 0을 출력하시오.