Universal Cup Judging System

Universal Cup

Time Limit: 5.0 s Memory Limit: 1024 MB Total points: 100 Hackable ✓
Statistics

Yana, Mino, White и Huzz — лучшие друзья.

В последнее время Mino чувствует себя растерянным. Одержимый прошлыми неудачами в OI, он с трудом планирует своё будущее, пытаясь совмещать это с загруженным школьным расписанием. Трое его друзей предложили ему оценить важность своих задач и расставить приоритеты.

Предположим, есть $n$ различных задач, пронумерованных от $1$ до $n$. Каждый раз Huzz выбирает две соседние задачи, White сравнивает их, а Yana объединяет их в одну задачу. К своему удивлению, Mino обнаруживает, что этот процесс случайно образует дерево отрезков, в котором разбиение не обязательно происходит посередине. Точнее говоря, образуется дерево из $2n - 1$ вершин, где каждое поддерево соответствует некоторому подотрезку. Заметим, что все $n$ задач являются листьями, а остальные $n - 1$ вершин имеют ровно по два сына. Эти вершины, возникающие в результате сравнений, определяют веса рёбер, ведущих к их сыновьям: $0$ для меньшего и $1$ для большего.

Mino очень любит вычисления. Он определяет вес каждой задачи как XOR-сумму рёбер на пути от этой задачи до корня. Ему интересно: если веса заданы, сколькими способами можно построить такие деревья и провести сравнения сыновей?

Опять же, Mino не силён в OI, поэтому он обратился за помощью к вам. Для упрощения задачи вам нужно лишь найти ответ по модулю $998,244,353$.

Формат входных данных

Первая строка входных данных содержит положительное целое число $n$ ($1 \le n \le 250000$) — количество задач.

Вторая строка содержит двоичную строку $S$ длины $n$, где $S_i$ представляет собой побитовый XOR (Bitwise-XOR) всех значений на рёбрах от задачи $i$ до корня.

Формат выходных данных

Выведите одно целое число — ответ по модулю $998,244,353$.

Пример

стандартный ввод

4
0101

стандартный вывод

6

Примечание

Существует $6$ способов построить дерево и сравнить сыновей:

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.