P14674 [ICPC 2025 Seoul R] Fair Problemset
Description
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 $3n$ problem evenly. They use one of two common methods to distribute problems:
1. **Sequential Distribution**: Each member takes a contiguous block of $n$ problems from the set of $3n$ problems. Specifically, the first member takes problems $1, \cdots, n$, the second member takes problems $n+1, \cdots, 2n$, and the third member takes problems $2n+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 $3n$ problems. Specifically, the first member takes problems $1, 4, 7, \cdots, 3n-2$, the second member takes problems $2, 5, 8, \cdots, 3n-1$, and the third member takes problems $3, 6, 9, \cdots, 3n$.
The ICPC Seoul Regional Contest Scientific Committee must prepare a problemset consisting of $3n$ problems. The difficulty of each problem is represented by an integer from 1 to $n$, 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 $3n$ containing three problems of each of the $n$ 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 $3n$ 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 $i$ ($1 \le i \le n$), each of the three members receives exactly one problem with difficulty $i$.
2. **Jump Distribution Fairness**: When using Jump Distribution, for every difficulty level $i$ ($1 \le i \le n$), each of the three members receives exactly one problem with difficulty $i$.
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 $n$, inclusive.
Given a positive integer $k$, write a program to find the number of Fair Problemset sequences of length $3n$ for each $n = 1, 2, \cdots, k$.
Input Format
Your program is to read from standard input. The input consists of exactly one line. The line contains two integers, $k$ and $m$ ($1 \le k \le 10^6$; $10^8 < m < 10^9$; $m$ is a prime number).
Output Format
Your program is to write to standard output. You should print exactly $k$ lines. On the $n$-th line ($1 \le n \le k$), print the number of Fair Problemset sequences of length $3n$, modulo $m$.
Explanation/Hint
Here are $12$ Fair Problemset sequences of length $9$ ($= 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
```