Олимпиадный тренинг

Задача . G. Конкатенация перестановок


Пусть \(n\) — произвольное целое число. Рассмотрим все перестановки чисел от \(1\) до \(n\) в лексикографическом порядке и конкатенируем их в одну большую последовательность \(P\). Например, если \(n = 3\), то \(P = [1, 2, 3, 1, 3, 2, 2, 1, 3, 2, 3, 1, 3, 1, 2, 3, 2, 1]\). Длина такой последовательности равна \(n \cdot n!\).

Пусть \(1 \leq i \leq j \leq n \cdot n!\) — пара индексов. Последовательность \((P_i, P_{i+1}, \dots, P_{j-1}, P_j)\) называется подмассивом \(P\).

Вам дано число \(n\). Найдите количество различных подмассивов \(P\). Так как это число может быть большим, выведите его по модулю \(998244353\) (это простое число).

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

В первой строке задано одно целое число \(n\) (\(1 \leq n \leq 10^6\)), описанное в условии.

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

Выведите одно целое число — количество различных подмассивов, взятое по модулю \(998244353\).

Примечание

В первом примере \(P = [1, 2, 2, 1]\). У нее восемь различных подмассивов: \([1]\), \([2]\), \([1, 2]\), \([2, 1]\), \([2, 2]\), \([1, 2, 2]\), \([2, 2, 1]\) и \([1, 2, 2, 1]\).


Примеры
Входные данныеВыходные данные
1 2
8
2 10
19210869

time 1000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w643
Комментарий учителя