만드는 중입니다

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

아름다운 수열 풀어내기

시간 제한7초메모리 제한512 MB

요약
길이가 n이고 원소가 1부터 k까지인 배열 중, 앞부분의 최댓값과 뒷부분의 최솟값이 같아지는 분할점이 없는 배열의 개수를 p로 나눈 나머지로 구합니다.
난이도

어려움10점 중 8점

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

문제

당신은 Beautiful Sequence Unraveler(BSU)라는 강력한 도구를 가진 행운의 소유자다. BSU는 아름다운 수열을 잘 다룬다.

아름다운 수열은 nn개의 정수로 이루어진 배열 a1,a2,…,ana_1, a_2, \ldots, a_n 중에서, 1≤i<n1 \le i < n을 만족하는 어떤 정수 ii에 대해서도 max⁡{a1,…,ai}=min⁡{ai+1,…,an}\max\{a_1, \dots, a_i\} = \min\{a_{i + 1}, \dots, a_n\}이 성립하지 않는 배열이다.

이런 수열이 얼마나 자주 나타나는지는 알 수 없다. 1 이상 kk 이하의 정수로 이루어진 길이 nn의 배열 전체에서 아름다운 수열의 개수를 구하라. 개수가 클 수 있으므로 소수 pp로 나눈 나머지를 출력한다.

입력

한 줄에 정수 nn, kk, pp(1≤n≤4001 \le n \le 400, 1≤k≤1081 \le k \le 10^8, 998 244 353≤p≤109+9998\,244\,353 \le p \le 10^9 + 9)가 주어진다.

pp는 소수임이 보장된다.

출력

답을 pp로 나눈 나머지를 출력한다.

예제3

  1. 예제 1

    입력
    2 2 1000000007
    
    예상 출력
    2
    
  2. 예제 2

    입력
    3 4 1000000009
    
    예상 출력
    36
    
  3. 예제 3

    입력
    228 112263 998244353
    
    예상 출력
    379700769