AT_pakencamp_2024_day3_1_l k!
Description
$ T $ 個のテストケースについて、以下の問題に答えてください。
正整数 $ N $ 及び素数 $ P $ が与えられます。 $ \displaystyle\prod_{k=1}^N k! $ を $ P $ で割った余りを求めてください。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ T $ $ \text{case}_1 $ $ \text{case}_2 $ $ \vdots $ $ \text{case}_T $
各テストケースは以下の形式で与えられる。
> $ N $ $ P $
Output Format
各テストケースについて、改行区切りで答えを出力せよ。
Explanation/Hint
### 部分点
- $ T \leq 5 $ を満たすデータセットに正解した場合は、 $ 40 $ 点与えられる。
- 追加制約のないデータセットに正解した場合は、上記とは別に $ 60 $ 点与えられる。
### Sample Explanation 1
$ 1 $ つ目のケースについて、 $ \displaystyle\prod_{k=1}^3 k!=1 \times 2 \times 6=12 $ なので、 $ 998244353 $ で割った余りは $ 12 $ です。
### Constraints
- $ 1 \leq T \leq 10 $
- $ 1 \leq N \leq 10^9 $
- $ 2 \leq P \leq 10^9+9 $
- $ P $ は素数
- 入力は全て整数