#P14674. [ICPC 2025 Seoul R] Fair Problemset

    ID: 16498 远端评测题 8000ms 1024MiB 尝试: 0 已通过: 0 难度: 8 上传者: 标签>2025组合数学快速傅里叶变换 FFTICPC首尔

[ICPC 2025 Seoul R] Fair Problemset

题目描述

This problem adopts exactly the same definition of Fair Problemset as Problem M, "Triple Fairness".

ICPC is a team competition. Each team has three members. At the beginning of a contest, most teams divide the 3n3n problem evenly. They use one of two common methods to distribute problems:

  1. Sequential Distribution: Each member takes a contiguous block of nn problems from the set of 3n3n problems. Specifically, the first member takes problems 1,,n1, \cdots, n, the second member takes problems n+1,,2nn+1, \cdots, 2n, and the third member takes problems 2n+1,,3n2n+1, \cdots, 3n.
  2. Jump Distribution: Each member takes problems with indices that have the same remainder when divided by 3 from the set of 3n3n problems. Specifically, the first member takes problems 1,4,7,,3n21, 4, 7, \cdots, 3n-2, the second member takes problems 2,5,8,,3n12, 5, 8, \cdots, 3n-1, and the third member takes problems 3,6,9,,3n3, 6, 9, \cdots, 3n.

The ICPC Seoul Regional Contest Scientific Committee must prepare a problemset consisting of 3n3n problems. The difficulty of each problem is represented by an integer from 1 to nn, inclusive. For each difficulty, there are exactly three problems with that difficulty. Thus, the arrangement of difficulties in the problemset can be viewed as a difficulty sequence of length 3n3n containing three problems of each of the nn difficulty levels.

To prevent any advantage or disadvantage for a team based on their chosen problem distribution method, the ICPC Seoul Regional Contest Scientific Committee has defined a standard called a Fair Problemset. A difficulty sequence of length 3n3n is called a Fair Problemset if it satisfies both of the following conditions:

  1. Sequential Distribution Fairness: When using Sequential Distribution, for every difficulty level ii (1in1 \le i \le n), each of the three members receives exactly one problem with difficulty ii.
  2. Jump Distribution Fairness: When using Jump Distribution, for every difficulty level ii (1in1 \le i \le n), each of the three members receives exactly one problem with difficulty ii.

In other words, regardless of which of the two methods is chosen, each team member must be assigned exactly one problem for each difficulty level from 1 to nn, inclusive.

Given a positive integer kk, write a program to find the number of Fair Problemset sequences of length 3n3n for each n=1,2,,kn = 1, 2, \cdots, k.

输入格式

Your program is to read from standard input. The input consists of exactly one line. The line contains two integers, kk and mm (1k1061 \le k \le 10^6; 108<m<10910^8 < m < 10^9; mm is a prime number).

输出格式

Your program is to write to standard output. You should print exactly kk lines. On the nn-th line (1nk1 \le n \le k), print the number of Fair Problemset sequences of length 3n3n, modulo mm.

2 993244853
1
2
3 998244353
1
2
12

提示

Here are 1212 Fair Problemset sequences of length 99 (=3×3= 3 \times 3)

i.    1 2 3 2 3 1 3 1 2
ii.   1 2 3 3 1 2 2 3 1
iii.  1 3 2 2 1 3 3 2 1
iv.   1 3 2 3 2 1 2 1 3
v.    2 1 3 1 3 2 3 2 1
vi.   2 1 3 3 2 1 1 3 2
vii.  2 3 1 1 2 3 3 1 2
viii. 2 3 1 3 1 2 1 2 3
ix.   3 1 2 1 2 3 2 3 1
x.    3 1 2 2 3 1 1 2 3
xi.   3 2 1 1 3 2 2 1 3
xii.  3 2 1 2 1 3 1 3 2