C. Нечестная скобочная последовательность
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Правильная скобочная последовательность — это последовательность, состоящая из '(' и ')', которую можно превратить в корректное математическое выражение, вставив $$$1$$$ и $$$+$$$ любое количество раз в последовательность. Например, последовательность «()(()())» является правильной скобочной последовательностью, в то время как «())(()» или «(()» не являются.

Вам дана правильная скобочная последовательность $$$S$$$.

Рассмотрим сдвиг подпоследовательности$$$^{\text{∗}}$$$ вправо. Формально, когда подпоследовательность $$$S_{i_1} S_{i_2} \ldots S_{i_k}$$$ сдвигается вправо, буквы на выбранных индексах одновременно переназначаются следующим образом:

  • $$$S_{i_1} \leftarrow S_{i_k}$$$;
  • $$$S_{i_2} \leftarrow S_{i_1}$$$;
  • $$$S_{i_3} \leftarrow S_{i_2}$$$;
  • $$$\ldots$$$
  • $$$S_{i_k} \leftarrow S_{i_{k-1}}$$$.

Другими словами, элемент на $$$j$$$-м выбранном индексе становится равен $$$((j-2) \bmod k + 1)$$$-й выбранной букве.

Например, когда $$$S$$$ равно «()(()())», сдвиг подпоследовательности $$$S_2 S_4$$$ изменяет $$$S$$$ на «((())())». С другой стороны, сдвиг $$$S_2 S_3 S_5$$$ изменяет $$$S$$$ на «())((())».

Пожалуйста, посчитайте, сколько непустых подпоследовательностей имеют свойство, что $$$S$$$ остаётся правильной при сдвиге подпоследовательности вправо. Поскольку ответ может быть очень большим, вам нужно вывести ответ по модулю $$$998\,244\,353$$$.

$$$^{\text{∗}}$$$Последовательность $$$a$$$ является подпоследовательностью $$$b$$$, если $$$a$$$ может быть получена из $$$b$$$ удалением нескольких (возможно, ни одного или всех) элементов на произвольных позициях. Две подпоследовательности считаются различными, если различаются множества позиций удаленных элементов.

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

Каждый тест состоит из нескольких наборов входных данных. В первой строке находится одно целое число $$$t$$$ ($$$1 \le t \le 10^4$$$) — количество наборов входных данных. Далее следует описание наборов входных данных.

Первая строка каждого набора входных данных содержит одно целое число $$$n$$$ ($$$2 \le n \le 300\,000$$$, $$$n$$$ четное).

Вторая строка каждого набора входных данных содержит правильную скобочную последовательность $$$S$$$ длиной $$$n$$$, представленную в виде строки без пробелов.

Гарантируется, что сумма $$$n$$$ по всем наборам входных данных не превосходит $$$300\,000$$$.

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

Для каждого набора входных данных выведите на отдельной строке ответ по модулю $$$998\,244\,353$$$.

Пример
Входные данные
4
2
()
4
()()
6
(()())
10
()((())())
Выходные данные
2
8
28
312
Примечание

Для второго набора входных данных $$$8$$$ непустых подпоследовательностей, которые делают так, чтобы $$$S$$$ оставалась правильной при сдвиге вправо, следующие:

  • $$$S_1$$$: изменяет $$$S$$$ на «()()»;
  • $$$S_2$$$: изменяет $$$S$$$ на «()()»;
  • $$$S_3$$$: изменяет $$$S$$$ на «()()»;
  • $$$S_4$$$: изменяет $$$S$$$ на «()()»;
  • $$$S_1 S_3$$$: изменяет $$$S$$$ на «()()»;
  • $$$S_2 S_3$$$: изменяет $$$S$$$ на «(())»;
  • $$$S_2 S_4$$$: изменяет $$$S$$$ на «()()»;
  • $$$S_1 S_2 S_3$$$: изменяет $$$S$$$ на «(())».