Universal Cup Judging System

Universal Cup

Límite de tiempo: 5.0 s Límite de memoria: 1024 MB Puntuación total: 100 Hackeable ✓
Estadísticas

Yana, Mino, White e Huzz sono migliori amici.

Mino si sente confuso ultimamente. Ossessionato dai suoi passati fallimenti nelle OI, ha faticato a pianificare il suo futuro mentre gestisce i suoi fitti impegni scolastici. I suoi tre amici gli hanno suggerito di valutare l'importanza dei suoi compiti e di stabilire delle priorità.

Supponiamo che ci siano $n$ compiti diversi numerati da $1$ a $n$. Ogni volta, Huzz seleziona due compiti adiacenti, White li confronta e Yana li unisce in un unico compito. Mino è sorpreso nello scoprire che questo processo forma accidentalmente un segment tree, che non si divide necessariamente a metà. Più precisamente, forma un albero con $2n - 1$ nodi, in cui ogni sottoalbero corrisponde a un segmento contiguo. Nota che tutti gli $n$ compiti sono foglie, mentre gli altri $n - 1$ nodi hanno ciascuno due figli. Questi nodi, che risultano dai confronti, definiscono i valori degli archi verso i loro figli: $0$ per il minore e $1$ per il maggiore.

Mino è molto appassionato di calcoli. Definisce il peso di ciascun compito come la somma XOR degli archi lungo il cammino dal compito alla radice. Si chiede: se i pesi sono noti, in quanti modi è possibile costruire tali alberi e confrontare i figli?

Ancora una volta, Mino non è abile nelle OI, ed è per questo che si è rivolto a te per chiedere aiuto. Per semplificare il problema, devi solo trovare la risposta modulo $998,244,353$.

Input

La prima riga dell'input contiene un intero positivo $n$ ($1 \le n \le 250000$), il numero di compiti.

La seconda riga contiene una stringa binaria $S$ di lunghezza $n$, dove $S_i$ rappresenta lo XOR bit a bit (Bitwise-XOR) di tutti i valori sugli archi dal compito $i$ alla radice.

Output

Stampa un intero, la risposta modulo $998,244,353$.

Esempio

Input

4
0101

Output

6

Note

Ci sono $6$ modi per costruire l'albero e confrontare i figli:

Figure 1

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.