小红的排列
题号:NC314590
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

\hspace{15pt}小红想要构造一个长为 n排列,她对这个排列有如下要求,用一个长为 n 的字符串 s 表示:
\hspace{23pt}\bullet 如果字符串的第 i 位为 \texttt{j},那么排列中第 i 位的元素必须是奇数;
\hspace{23pt}\bullet 如果字符串的第 i 位为 \texttt{o},那么排列中第 i 位的元素必须是偶数;
\hspace{23pt}\bullet 如果字符串的第 i 位为 \texttt{?},那么排列中第 i 位的元素可以是奇数也可以是偶数。
\hspace{15pt}小红想知道一共有多少种合法的排列,请你帮帮她。由于答案可能很大,请将结果对 998244353 取模后输出。

【名词解释】
\hspace{15pt}长度为 n排列:由 1,2,\dots,nn 个整数、按任意顺序组成的数组(每个整数均恰好出现一次)。例如,\{2,3,1,5,4\} 是一个长度为 5 的排列,而 \{1,2,2\}\{1,3,4\} 都不是排列,因为前者存在重复元素,后者包含了超出范围的数。

输入描述:

\hspace{15pt}第一行输入一个整数 n\left(1 \leqq n \leqq 2\times 10^5 \right)
\hspace{15pt}第二行输入一个长为 n 的字符串 s

输出描述:

\hspace{15pt}输出一个整数,代表答案对 998244353 取模后的值。
示例1

输入

复制
3
j??

输出

复制
4

说明

\hspace{15pt} 合法的排列有 \{1, 2, 3\},\{1,3,2\},\{3,1,2\},\{3,2,1\}
示例2

输入

复制
3
oo?

输出

复制
0