编程题
### 问题描述
现在给定你一个长度为 $n$ 的字符串 $a$,这个字符串由 $0,1,2$ 构成。
假设存在一个由 `true` 和 `false` 构造出的长度为 $n+1$ 的序列 $S$,我们定义序列 $S$ 相邻两个元素之间有一个空槽,现在序列 $S$ 一共有 $n$ 个空槽。
我们将字符串 $a$ 每一项按顺序从左到右依次填入到序列 $S$ 的空槽中,此时我们定义 $a[i]=0$ 为 $S$ 相邻的两个元素做与运算,$a[i]=1$ 为相邻的两个元素做或运算,$a[i]=2$ 为相邻的两个元素做异或运算。
接下来我们将序列 $S$ 从左到右依次执行位运算,例如 $a=012,S=[true,false,true,false]$,则该运算最终定义为 $true \And false|true\oplus false=true$。
注意:计算机默认优先级为 $\And > \oplus >|$,而我们在这里的定义为依次运算,所以你无需考虑运算符优先级,只需从左往右依次计算即可。
最后询问你,在 $a$ 字符串每一项插入到 $S$ 序列后使得运算结果为 $true$ 的 $S$ 序列由多少种不同构造方法,输出结果对 $998244353$ 取模。
定义 $true=1,false=0$。
与运算: $1\And1=1,1\And0=0,0\And0=0$。
或运算:$1|1=1,1|0=1,0|0=0$。
异或运算: $1\oplus 1=0,1\oplus0=1,0\oplus0=0$。
### 输入格式
第一行输入一个整数 $n$ 表示字符串 $a$ 长度。
第二行输入长度为 $n$ 的字符串。
### 输出格式
输出 $S$ 有多少种不同的构造方式,对 $998244353$ 取模。
### 样例输入
```text
7
0121111
```
### 样例输出
```text
248
```
### 评测数据规模
$1\le n \le 10^5$。