| Codeforces Round 1035 (Div. 2) |
|---|
| Закончено |
Назовём последовательность целых чисел $$$a$$$ валидной, если и только если $$$\forall 1 \le i \le n, 0 \le a_i \le i$$$.
Для валидной последовательности $$$a$$$ длины $$$n$$$ определим вес $$$f(a)$$$:
Например, $$$f([0, 2, 1]) = 2$$$, потому что мы можем последовательно удалить токены на позициях $$$2, 1$$$ или $$$2, 3$$$.
JT даёт вам два целых числа $$$n, m$$$ и просит вас найти сумму весов всех $$$(n + 1)!$$$ валидных последовательностей длины $$$n$$$. Поскольку ответ может быть очень большим, выведите его по модулю $$$m$$$.
Каждый тест состоит из нескольких наборов входных данных. В первой строке находится одно целое число $$$t$$$ ($$$1 \le t \le 1000$$$) — количество наборов входных данных. Далее следует описание наборов входных данных.
Единственная строка каждого набора входных данных содержит два целых числа $$$n$$$ и $$$m$$$ ($$$1 \le n \le 5000, 10^8 \le m \le 1.01 \cdot 10^9$$$) — длина валидных последовательностей и модуль.
Гарантируется, что сумма $$$n^2$$$ по всем наборам входных данных не превосходит $$$2.5 \cdot 10^7$$$.
Для каждого набора входных данных выведите целое число — сумму весов всех $$$(n + 1)!$$$ валидных последовательностей длины $$$n$$$, по модулю $$$m$$$.
61 10000000072 10000000073 10000000074 10000000075 1000000007114 514191981
2 7 37 273 2672 393775292
В первом наборе входных данных валидные последовательности — это $$$[0]$$$ и $$$[1]$$$, и ответ равен $$$f([0]) + f([1]) = 1 + 1 = 2$$$.
Во втором наборе входных данных валидные последовательности — это $$$[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2]$$$. Вес $$$[0, 1]$$$ равен $$$2$$$, а остальные — $$$1$$$, так что ответ равен $$$5 \cdot 1 + 1 \cdot 2 = 7$$$.
| Название |
|---|


