F2. Слайм и последовательности (усложненная версия)
ограничение по времени на тест
3 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Обратите внимание что единственные различия между версиями это $$$n$$$ и ограничения по времени. Вы можете взламывать, только если обе версии решены.

Слайм интересуется последовательностями. Он определил хорошие последовательности $$$p$$$ длины $$$n$$$ из натуральных чисел следующим образом:

  • Для каждого $$$k>1$$$, которое встречается в $$$p$$$, должна существовать хотя бы одна пара индексов $$$i,j$$$, такая что $$$1 \leq i < j \leq n$$$, $$$p_i = k - 1$$$ и $$$p_j = k$$$.

Для данного целого числа $$$n$$$ множество хороших последовательностей длины $$$n$$$ это $$$s_n$$$. Для фиксированного целого числа $$$k$$$ и последовательности $$$p$$$, обозначим за $$$f_p(k)$$$ количество раз, которое $$$k$$$ встречается в $$$p$$$. Для каждого $$$k$$$ от $$$1$$$ до $$$n$$$, Слайм хочет знать следующее значение:

$$$$$$\left(\sum_{p\in s_n} f_p(k)\right)\ \textrm{mod}\ 998\,244\,353$$$$$$

Входные данные

В первой строке записано одно целое число $$$n\ (1\le n\le 100\,000)$$$.

Выходные данные

Выведите $$$n$$$ целых чисел, $$$i$$$-е из них должно быть равно $$$\left(\sum_{p\in s_n} f_p(i)\right)\ \textrm{mod}\ 998\,244\,353$$$.

Примеры
Входные данные
2
Выходные данные
3 1 
Входные данные
3
Выходные данные
10 7 1 
Входные данные
1
Выходные данные
1 
Примечание

В первом примере $$$s=\{[1,1],[1,2]\}$$$.

Во втором примере $$$s=\{[1,1,1],[1,1,2],[1,2,1],[1,2,2],[2,1,2],[1,2,3]\}$$$.

В третьем примере $$$s=\{[1]\}$$$.