Lord of the Characteristic Polynomials (1)

아직 제출이 없습니다시간 제한5초메모리 제한1024 MB

문제

n×nn \times n 행렬 AA의 행렬식(determinant) detA\det A는 아래와 같이 정의한다. 아래 식에서 a_ija\_{ij}AAiijj열에 위치한 원소를 나타낸다. 또한 S_nS\_{n}1,,n\\{1, \cdots, n\\}의 순열들의 집합으로, 각 σS_n\sigma \in S\_{n}에 대해 1,,n=σ(1),,σ(n)\\{1, \cdots, n\\} = \\{\sigma(1), \cdots, \sigma(n)\\}을 만족한다.

detA=_σS_nsgn(σ)(_i=1na_iσ(i))\det A = \sum\_{\sigma \in S\_{n}} \mathrm{sgn}(\sigma) \cdot \left(\prod\_{i = 1}^{n} a\_{i \sigma(i)}\right)

AA의 characteristic polynomial ϕ_A(x)\phi\_{A}(x)xx에 대한 nn차 다항식으로, ϕ_A(x)=det(xIA)=c_nxn+c_n1xn1++c_0\phi\_{A}(x) = \det(x I - A) = c\_{n}x^{n} + c\_{n-1}x^{n-1} + \cdots + c\_{0}로 정의한다.

각 원소가 00 이상 10910^{9} 미만의 정수인 행렬 AA가 주어진다. 이 때 ϕ_A(x)\phi\_{A}(x)의 계수 c_0,,c_nc\_{0}, \cdots, c\_{n} 또한 정수임을 증명할 수 있다. 주어진 정수 MM에 대해, 이들을 각각 MM으로 나눈 나머지를 구하는 프로그램을 작성하시오.

입력

입력의 첫 줄에 행렬의 크기를 나타내는 정수 nn과 나눗셈에 사용되는 정수 MM이 주어진다.

둘째 줄부터 nn개의 줄에 걸쳐 행렬 AA의 원소가 각 줄에 nn개씩 공백으로 구분지어 주어진다. 이 중 ii번째 줄의 jj번째 수는 AAiijj열의 원소 a_ija\_{ij}를 의미한다.

출력

n+1n+1개의 줄에 걸쳐 c_0,,c_nc\_{0}, \cdots, c\_{n}MM으로 나눈 나머지를 출력한다.

정수 aaMM으로 나눈 나머지란, aba - bMM의 배수가 되는 가장 작은 음 아닌 정수 bb를 의미한다.

제한

  • 1n5001 \le n \le 500
  • 2M1092 \le M \le 10^{9}
  • 0a_ij<1090 \le a\_{ij} < 10^{9} (1i,jn)(1 \le i, j \le n)