만드는 중입니다

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

페노메널 배열의 개수 세기

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

요약
길이가 2부터 n까지인 양의 정수 배열 중 곱이 합과 같은 것의 개수를 각각 소수 P로 나눈 나머지로 구합니다.
난이도

보통10점 중 7점

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

문제

양의 정수로 이루어진 배열 [a1,a2,…,ak][a_1, a_2, \ldots, a_k]은 모든 원소의 곱이 모든 원소의 합과 같을 때 페노메널 배열이라고 부른다. 즉 a1a2…ak=a1+a2+…+aka_1 a_2 \ldots a_k = a_1 + a_2 + \ldots + a_k가 성립하면 페노메널 배열이다.

예를 들어 [2,2][2, 2]는 2⋅2=2+2=42 \cdot 2 = 2 + 2 = 4이므로 페노메널 배열이다. [3,1,2][3, 1, 2]는 3⋅1⋅2=3+1+2=63 \cdot 1 \cdot 2 = 3 + 1 + 2 = 6이므로 페노메널 배열이다. 반면 [2,3][2, 3]은 2⋅3≠2+32 \cdot 3 \neq 2 + 3이므로 페노메널 배열이 아니다.

f(i)f(i)를 크기가 ii인 페노메널 배열의 개수라고 하자. 임의의 i≥2i \ge 2에 대해 크기가 ii인 페노메널 배열은 유한개만 존재함을 보일 수 있다.

정수 nn이 주어진다. f(2),f(3),…,f(n)f(2), f(3), \ldots, f(n)을 구하라. 이 값들은 매우 클 수 있으므로 각각을 PP로 나눈 나머지를 출력하라.

입력

첫 번째 줄에 두 정수 nn, PP가 주어진다. (2≤n≤2⋅1052 \le n \le 2\cdot 10^5, 108≤P≤10910^8 \le P \le 10^9, PP는 소수이다.)

출력

n−1n-1개의 정수를 출력한다. 이 정수들은 f(2),f(3),…,f(n)f(2), f(3), \ldots, f(n)을 PP로 나눈 나머지이다.

예제1

  1. 예제 1

    입력
    7 804437957
    
    예상 출력
    1 6 12 40 30 84