만드는 중입니다

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

컵 쌓기

시간 제한2초메모리 제한1024 MB

요약
N개의 컵으로 규칙에 맞게 쌓는 방법의 수를 P로 나눈 나머지를 구합니다. 윗컵 아래의 두 컵 중 하나 이상은 빨간 컵이어야 합니다.
난이도

어려움10점 중 8점

유형
동적 계획법, 조합론
정답자
아직 제출이 없습니다

문제

스포츠스태킹은 NN개의 컵을 다양한 방법으로 빠르게 쌓는 스포츠 경기다. 스포츠스태킹 협회장 한나는 이번에 새로 출시한 빨간 컵의 판매량을 늘리기 위해 새로운 스포츠스태킹 종목을 도입하려고 한다. (그림에서 빨간 컵은 가로줄이 그려진 컵이다.) 규칙은 다음과 같다.

참가자는 빨간 컵 NN개와 파란 컵 NN개를 준비한다. 참가자는 이 중 NN개의 컵을 사용해 규칙에 맞는 배치를 아무거나 만들어야 한다. 컵을 쌓는 규칙은 다음과 같다.

  • 맨 아랫층에는 컵이 일렬로 연속해 있어야 한다.
  • 이웃한 두 컵의 중앙 위쪽에 다른 컵을 쌓을 수 있다. 이를 반복해서 여러 층을 쌓을 수도 있다.
  • 이웃한 두 컵 위에 다른 컵을 쌓으려면 두 컵 중 적어도 하나는 빨간 컵이어야 한다.

같은 색 컵끼리는 구분할 수 없다. 컵을 쌓는 경우의 수를 주어진 소수 PP로 나눈 나머지를 구하라. 서로 대칭인 두 배치도 서로 다른 배치로 센다.

입력

첫 번째 줄에 쌓을 컵의 개수를 나타내는 정수 NN과 나누어 출력할 소수 PP가 공백을 사이에 두고 주어진다.

출력

규칙을 만족하도록 NN개의 컵을 쌓는 경우의 수를 PP로 나눈 나머지를 출력한다.

제한

  • 1≤N≤1501\le N\le 150
  • 2≤P≤1092\le P\le 10^9
  • PP는 소수이다.

힌트

컵 3개를 쌓는 방법은 다음 그림과 같이 14가지가 있다.

예제3

  1. 예제 1

    입력
    3 998244353
    
    예상 출력
    14
    
  2. 예제 2

    입력
    5 998244353
    
    예상 출력
    124
    
  3. 예제 3

    입력
    7 998244353
    
    예상 출력
    1248