Вам дано целое число \(n\) и массив \(a\) длины \(n-1\), элементы которого либо \(0\), либо \(1\).
Определим стоимость перестановки \(^\dagger\) \(p\) длины \(m-1\) (\(m \leq n\)) следующим образом.
Пусть \(G\) - граф из \(m\) вершин с номерами от \(1\) до \(m\), не содержащий ребер. Для каждого \(i\) от \(1\) до \(m-1\) выполните следующие операции:
- определим \(u\) и \(v\) как (различные) вершины с только входящими ребрами\(^{\dagger\dagger}\) в компонентах слабой связности \(^\ddagger\), содержащих вершины \(p_i\) и \(p_i+1\) соответственно
- в графе \(G\), добавим направленное ребро из вершины \(v\) в \(u\), если \(a_{p_i}=0\), иначе добавим направленное ребро из вершины \(u\) в \(v\) (если \(a_{p_i}=1\)).
Заметим, что после каждого шага можно показать, что каждая компонента слабой связности
\(G\) имеет ровно одну вершину с только входящими рёбрами.
Тогда, значение \(p\) — это количество входящих ребер \(G\) в вершину \(1\).
Для каждого \(k\) от \(1\) до \(n-1\) найдите сумму стоимостей всех \(k!\) перестановок длины \(k\). Поскольку эта величина может быть большой, от вас требуется вычислить ее только по модулю \(998\,244\,353\).
Операции при \(n=3\), \(a=[0,1]\) и \(p=[1,2]\) \(^\dagger\) Перестановка длины \(n\) - это массив, состоящий из \(n\) различных целых чисел от \(1\) до \(n\) в произвольном порядке. Например, \([2,3,1,5,4]\) - перестановка, но \([1,2,2]\) - не перестановка (\(2\) встречается в массиве дважды), и \([1,3,4]\) - тоже не перестановка (\(n=3\), но в массиве есть \(4\)).
\(^\ddagger\) Компоненты слабой связности направленного графа — это то же самое, что и компоненты неориентированной версии графа. Формально, для направленного графа \(G\) определите граф \(H\), где для всех ребер \(a \to b\) в \(G\) добавляется неориентированное ребро \(a \leftrightarrow b\) в \(H\). Тогда компоненты слабой связности \(G\) являются компонентами \(H\).
\(^{\dagger\dagger}\) Заметим, что вершина, не имеющая ребер, считается имеющей только входящие ребра.
Примечание
Рассмотрим первый набор входных данных.
Когда \(k=1\), существует только \(1\) перестановка \(p\).
- Когда \(p=[1]\), мы добавим одно ребро из вершины \(2\) в \(1\). Вершина \(1\) будет иметь \(1\) входящее ребро. Поэтому значение \([1]\) равно \(1\).
Поэтому, когда \(k=1\), ответ равен \(1\).
Когда \(k=2\), существует \(2\) перестановки \(p\).
- Когда \(p=[1,2]\), мы добавим ребро из вершины \(2\) в \(1\) и ребро из \(3\) в \(1\). Вершина \(1\) будет иметь \(2\) входящих ребер. Таким образом, значение \([1,2]\) равно \(2\).
- Когда \(p=[2,1]\), мы добавим ребро из вершины \(3\) в \(2\) и ребро из \(2\) в \(1\). Вершина \(1\) будет иметь входящее ребро \(1\). Таким образом, значение \([2,1]\) равно \(1\).
Поэтому, когда \(k=2\), ответ будет \(2+1=3\).