만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

Fresh Matrix

시간 제한6초메모리 제한256 MB

요약
변을 공유하는 1이 없고 0인 칸이 모두 한 덩어리로 이어지는 n행 m열 행렬의 개수를 소수 p로 나눈 나머지로 구합니다.
난이도

어려움10점 중 9점

유형
동적 계획법, 행렬, 비트 연산
정답자
아직 제출이 없습니다

문제

0과 1로 이루어진 행렬에서 변을 공유하는 두 칸에 모두 1이 놓이지 않으면 좋은 행렬이라고 한다. 0과 1로 이루어진 행렬에서 임의의 두 0 사이에 1이 없는 경로가 있고, 경로에서 연속한 두 칸이 변을 공유하면 연결된 행렬이라고 한다.

nn행 mm열인 좋은 그리고 연결된 0과 1의 행렬은 몇 개인가? 답이 매우 클 수 있으므로 소수 pp로 나눈 나머지만 출력한다.

입력

첫째 줄에 세 정수 nn, mm, pp가 주어진다. nn은 행의 수, mm은 열의 수, pp는 나눗셈에 쓸 소수이다. (2≤n≤112 \le n \le 11; 1≤m≤1091 \le m \le 10^9; 2≤p≤1092 \le p \le 10^9; pp는 소수이다.)

출력

좋고 연결된 행렬의 개수를 pp로 나눈 나머지를 정수 하나로 출력한다.

예제3

  1. 예제 1

    입력
    2 2 998244353
    
    예상 출력
    5
    
  2. 예제 2

    입력
    4 1 998244353
    
    예상 출력
    4
    
  3. 예제 3

    입력
    4 5 998244353
    
    예상 출력
    2749