아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

수수께끼의 … 주최자

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

요약
N 이하의 각 n에 대해, 모든 구간이 연속인지 묻는 질의에 대한 답이 선택한 순열 중 하나와 일치하도록 만드는 최소 순열 개수를 소수 P로 나눈 나머지를 구한다.
난이도

어려움10점 중 10점

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

문제

마침내 리카는 효율적인 교통을 만들면서도 돈이 적게 드는 훌륭한 설계를 얻었다. 하지만 리카는 진부한 관리들이 그것을 받아들일지 신경 쓰지 않았다. LCR은 순결한 미소와 화환, 하얀 드레스를 걸치고 오래전부터 그녀의 뒤에 서 있었기 때문이다. 그 미소에 서서히 마음을 가라앉힌 소녀들은 손을 내밀어 여정을 시작했다. 낭만적인 만남 끝에 그들은 서북공업대학 부속중학교의 자습실에 도착했다.

화이트보드와 종이에 적힌 공식들은 리카에게 (물론 공부에 대한) 기억을 되살려 주었고, 그래서 그녀는 지금 LCR에게 함께 게임을 하자고 부탁한다 (조합론을 복습하기 위해서다).

LCR은 nn차 순열을 하나 가지고 있고 리카는 그것을 맞히려 한다. 처음에 리카는 nn차 순열의 집합을 하나 골라야 한다. 그다음 LCR이 몇 번의 질의를 한다. 매번 LCR은 구간 [L,R][L, R] (1≤L≤R≤n1\le L\le R\le n)을 주고, 리카는 고른 각 순열마다 그 구간이 그 안에서 연속인지 (아래 문단에서 정의한다) 답한다. 마지막에 리카는 고른 순열 중 LCR의 원래 순열과 모든 질의에 대한 답이 같은 것이 하나라도 존재하면 게임에서 이긴다.

리카는 게임을 반드시 이기려면 순열을 최소 몇 개 골라야 하는지 궁금해한다. 앞으로의 게임을 위해 그녀는 NN 이하의 모든 양의 정수 nn에 대한 답이 필요하다. 정확한 값은 너무 클 수 있으므로 어떤 소수 PP로 나눈 나머지만 구하면 된다.

구간 [L,R][L, R]이 nn차 순열 pp에서 연속이라는 것은 다음 조건을 만족하는 세 정수 x,y,zx, y, z가 존재하지 않는다는 뜻이다. 1≤x,y,z≤n1\le x, y, z\le n, px<py<pzp_x<p_y<p_z, x,z∈[L,R]x, z \in [L, R], y∉[L,R]y \notin [L, R]. 여기서 pip_i (i=1,2,…,ni = 1, 2, \dots, n)는 [1,n][1, n] 안의 정수이고, 순열 pp의 ii번째 원소를 뜻한다.

입력

첫 줄에 두 정수 NN (1≤N≤50001\le N\le 5000), PP (1≤P<2301\le P < 2^{30}, ∃k∈N,P=k⋅214+1\exists k\in \mathbb{N}, P=k\cdot 2^{14}+1)가 공백으로 구분되어 주어진다. 각각 순열 차수의 최댓값과 나눗수다. PP는 소수임이 보장된다.

출력

NN개의 줄을 출력한다. n=1,2,…,Nn = 1, 2, \dots, N에 대해 nn번째 줄에는 리카가 nn차 순열에 대해 골라야 하는 순열 개수의 최솟값을 PP로 나눈 나머지를 출력한다.

힌트

n=3n=3이면 순열은 66개, 가능한 질의는 66개다. 이 상황에서 리카의 응답은 다음과 같다.

(1,2,3)(1, 2, 3)(1,3,2)(1, 3, 2)(2,1,3)(2, 1, 3)(2,3,1)(2, 3, 1)(3,1,2)(3, 1, 2)(3,2,1)(3, 2, 1)
[1,1][1, 1]TrueTrueTrueTrueTrueTrue
[2,2][2, 2]TrueTrueTrueTrueTrueTrue
[3,3][3, 3]TrueTrueTrueTrueTrueTrue
[1,2][1, 2]TrueFalseTrueTrueFalseTrue
[2,3][2, 3]TrueTrueFalseFalseTrueTrue
[1,3][1, 3]TrueTrueTrueTrueTrueTrue

답은 33이다. 예를 들어 리카가 (1,2,3),(1,3,2),(2,1,3)(1, 2, 3), (1, 3, 2), (2, 1, 3)을 고르면, LCR이 어떤 순열을 가지고 있든 고른 순열 중 LCR의 순열과 모든 질의에 대한 답이 같은 것이 존재한다.

예제1

  1. 예제 1

    입력
    10 65537
    
    예상 출력
    1
    1
    3
    12
    52
    240
    1160
    5795
    29681
    23951