n×n 행렬 A의 행렬식(determinant) detA는 아래와 같이 정의한다. 아래 식에서 a_ij는 A의 i행 j열에 위치한 원소를 나타낸다. 또한 S_n는 1,⋯,n의 순열들의 집합으로, 각 σ∈S_n에 대해 1,⋯,n=σ(1),⋯,σ(n)을 만족한다.
detA=∑_σ∈S_nsgn(σ)⋅(∏_i=1na_iσ(i))
A의 characteristic polynomial ϕ_A(x)는 x에 대한 n차 다항식으로, ϕ_A(x)=det(xI−A)=c_nxn+c_n−1xn−1+⋯+c_0로 정의한다.
각 원소가 0 이상 109 미만의 정수인 행렬 A가 주어진다. 이 때 ϕ_A(x)의 계수 c_0,⋯,c_n 또한 정수임을 증명할 수 있다. 주어진 정수 M에 대해, 이들을 각각 M으로 나눈 나머지를 구하는 프로그램을 작성하시오.
입력의 첫 줄에 행렬의 크기를 나타내는 정수 n과 나눗셈에 사용되는 정수 M이 주어진다.
둘째 줄부터 n개의 줄에 걸쳐 행렬 A의 원소가 각 줄에 n개씩 공백으로 구분지어 주어진다. 이 중 i번째 줄의 j번째 수는 A의 i행 j열의 원소 a_ij를 의미한다.
n+1개의 줄에 걸쳐 c_0,⋯,c_n을 M으로 나눈 나머지를 출력한다.
정수 a를 M으로 나눈 나머지란, a−b가 M의 배수가 되는 가장 작은 음 아닌 정수 b를 의미한다.