### 问题描述
现在给定你一个长度为 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⊕false&true=true。
注意:计算机默认优先级为 &>⊕>|,而我们在这里的定义为依次运算,所以你无需考虑运算符优先级,只需从左往右依次计算即可。
最后询问你,在 a 字符串每一项插入到 S 序列后使得运算结果为 true 的 S 序列由多少种不同构造方法,输出结果对 998244353 取模。
定义 true=1,false=0。
与运算: 1&1=1,1&0=0,0&0=0。
异或运算: 1⊕1=0,1⊕0=1,0⊕0=0。
第一行输入一个整数 n 表示字符串 a 长度。
第二行输入长度为 n 的 01
串。
输出 S 有多少种不同的构造方式,对 998244353 取模。
2
01
4
[true,false,true],[true,true,false],[false,true,true],[false,false,true] 都是符合构造条件的 S 序列。
1≤n≤105。