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