破灭
内存限制: 256 Mb时间限制: 1000 ms
题目描述
世界濒临破灭。Gleipse 正带领着
n
n 个魔法师试图拯救世界。
Gleipse 将
n
n 个魔法师排成一排。每个魔法师手上有两块水晶,每块水晶要么是红色的,要么是蓝色的。我们将第
i
i 个魔法师手上有的两块水晶记作
a
i
a
i
,其意义为:
A
I
0
A
I
=0:两块水晶都是红色的;
A
I
1
A
I
=1:两块水晶,一块是红色的,一块是蓝色的;
A
I
2
a
i
=2:两块水晶都是蓝色的。
现在 Gleipse 要收集所有人的水晶排成一行。他命令所有魔法师进行如下操作共
2
n
2n 次:
所有有水晶的魔法师同时选择自己手中的一块水晶,交给前面的一个魔法师。例如魔法师
i
i 将水晶交给魔法师
i
−
1
i−1。特殊的,魔法师
1
1 将水晶交给 Gleipse。
Gleipse 将收到的水晶放在收集的水晶的队列末尾。
最终 Gleipse 将得到一个长度为
2
n
2n 的水晶队列。
因为
2
n
2n 块水晶足以阻止世界的破灭,所以 Gleipse 好奇所有可能出现的不同的水晶队列的数量。由于数量可能太多,所以 Gleipse 只要求答案对
998244353
998244353 取模的值。
输入格式
第一行一个整数
n
n,表示魔法师的数量。
第二行共
n
n 个整数,表示
a
1
,
a
2
,
⋯
,
a
n
a
1
,a
2
,⋯,a
n
。
输出格式
一行一个整数,表示答案对
998244353
998244353 取模的值。
数据范围
对于
30
%
30% 的数据,
1
≤
n
≤
6
1≤n≤6。
对于
60
%
60% 的数据,
1
≤
n
≤
200
1≤n≤200。
对于
100
%
100% 的数据,
1
≤
n
≤
2
×
1
0
3
,
0
≤
a
i
≤
2
1≤n≤2×10
3
,0≤a
i
≤2。
样例数据
输入:
4
1 2 1 0
输出:
55