QOJ.ac

QOJ

Time Limit: 5 s Memory Limit: 1024 MB

#23597. Prima parola

Statistics

VegiCat ha una stringa $S$ di $n$ lettere minuscole dell'alfabeto inglese. Vuole costruire un dizionario che contenga $k$ sottostringhe non vuote distinte di $S$ come parole. Una sottostringa è una parte contigua di una stringa. Le sottostringhe con lo stesso contenuto sono considerate come la stessa parola, anche se compaiono in posizioni diverse in $S$.

problem_23597_b7c3639e439584b24d8e3cd0c7e7774e.png

Sia $\pi$ una mappa dalle lettere $\texttt{a}, \texttt{b}, \ldots, \texttt{z}$ alle lettere corrispondenti in una permutazione delle $26$ lettere minuscole dell'alfabeto inglese. Ad esempio, la permutazione $\texttt{qwertyuiopasdfghjklzxcvbnm}$ definisce la seguente mappa:

$$ \begin{array}{c|cccccccccccccccccccccccccc} c & \texttt{a} & \texttt{b} & \texttt{c} & \texttt{d} & \texttt{e} & \texttt{f} & \texttt{g} & \texttt{h} & \texttt{i} & \texttt{j} & \texttt{k} & \texttt{l} & \texttt{m} & \texttt{n} & \texttt{o} & \texttt{p} & \texttt{q} & \texttt{r} & \texttt{s} & \texttt{t} & \texttt{u} & \texttt{v} & \texttt{w} & \texttt{x} & \texttt{y} & \texttt{z} \\ \hline \pi(c) & \texttt{q} & \texttt{w} & \texttt{e} & \texttt{r} & \texttt{t} & \texttt{y} & \texttt{u} & \texttt{i} & \texttt{o} & \texttt{p} & \texttt{a} & \texttt{s} & \texttt{d} & \texttt{f} & \texttt{g} & \texttt{h} & \texttt{j} & \texttt{k} & \texttt{l} & \texttt{z} & \texttt{x} & \texttt{c} & \texttt{v} & \texttt{b} & \texttt{n} & \texttt{m} \end{array} $$

Per una stringa $u = u_1 u_2 \cdots u_m$, definiamo

$$ \pi(u) = \pi(u_1)\pi(u_2) \cdots \pi(u_m). $$

Ad esempio, con la mappa precedente, $\pi(\texttt{apple}) = \texttt{qhhst}$.

VegiCat vuole che il dizionario contenga una parola $w$ tale che, dopo aver applicato una qualsiasi mappa $\pi$ di questo tipo a ogni parola del dizionario, $\pi(w)$ sia sempre la parola lessicograficamente più piccola nel dizionario risultante.

Per ogni $k = 1, 2, \ldots, n$, trova il numero di dizionari che contengono $k$ parole distinte e soddisfano il requisito, modulo $998\,244\,353$. Due dizionari sono considerati diversi se e solo se contengono insiemi diversi di parole prima che venga applicata qualsiasi mappa.

Ricorda che la stringa $a$ è lessicograficamente minore della stringa $b$ se $a$ è un prefisso di $b$ (e $a \neq b$), oppure se esiste un indice $i$ ($1 \le i \le \min(|a|, |b|)$) tale che $a_i < b_i$, e per ogni indice $j$ ($1 \le j < i$) vale $a_j = b_j$.

Input

La prima riga contiene un intero $T$ ($1 \le T \le 10^4$), il numero di casi di prova. Segue la descrizione dei casi di prova.

La prima riga di ogni caso di prova contiene un intero $n$ ($1 \le n \le 10^5$).

La seconda riga contiene una stringa $S$ di lunghezza $n$, composta esclusivamente da lettere minuscole dell'alfabeto inglese.

È garantito che la somma di $n$ su tutti i casi di prova non superi $10^5$.

Output

Per ogni caso di prova, stampa $n$ interi su una riga. Il $k$-esimo intero rappresenta il numero di dizionari che contengono $k$ parole distinte e soddisfano il requisito, modulo $998\,244\,353$.

Examples

Input 1

3
3
aab
4
ppqq
7
abcaabc

Output 1

5 4 3
8 10 11 10
21 52 87 119 139 128 84

Note

Ogni dizionario qui sotto è scritto come un insieme di parole.

Per il primo caso di prova, $S = \texttt{aab}$, i dizionari che soddisfano il requisito per $k = 1, 2, 3$ sono:

$k$ Insiemi di parole che soddisfano il requisito Numero di dizionari
$1$ $\{\texttt{a}\,\},\ \{\texttt{b}\,\},\ \{\texttt{aa}\,\},\ \{\texttt{ab}\,\},\ \{\texttt{aab}\,\}$ $5$
$2$ $\{\texttt{a}, \texttt{aa}\,\},\ \{\texttt{a}, \texttt{ab}\,\},\ \{\texttt{a}, \texttt{aab}\,\},\ \{\texttt{aa}, \texttt{aab}\,\}$ $4$
$3$ $\{\texttt{a}, \texttt{aa}, \texttt{ab}\,\},\ \{\texttt{a}, \texttt{aa}, \texttt{aab}\,\},\ \{\texttt{a}, \texttt{ab}, \texttt{aab}\,\}$ $3$

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
#3182EditorialOpenNew Editorial for Problem #23597ucup-team9445View

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.