#E0047. 数列划分

数列划分

题目描述

给定一个长度为 n(1n105)n(1 \le n \le 10^5) 的数列 a1,a2,,an(0ai1)a_1, a_2, \ldots, a_n(0 \le a_i \le 1)

该数列中的每个元素的数值均为 0011

现在,你需要将这个数列划分为若干个连续子序列,且满足如下条件:

每一个连续子序列中均包含恰好一个数值为 11 的元素。

求:存在多少个不同的划分方案?

由于方案数可能很多,所以你只需要输出总的方案数模 998244353998244353 的结果即可。

输入格式

第一行,一个整数 n(1n105)n(1 \le n \le 10^5)

第二行,nn 个整数 a1,a2,,an(0ai1)a_1, a_2, \ldots, a_n(0 \le a_i \le 1)

数据保证数列 aa 中至少存在一个元素的数值为 11

输出格式

输出一个整数,表示满足条件的方案数模 998244353998244353 的结果。

3
0 1 0
1
5
1 0 1 0 1
4

说明/提示

样例解释

样例1:只有 11 种方案,即数列 aa 整理作为一个连续子序列。

样例2:有 44 中不同的划分方案,如下:

  • 10|10|1
  • 1|010|1
  • 10|1|01
  • 1|01|01

数据规模与约定

  • 对于 20%20\% 的数据,n10n \le 10
  • 对于 50%50\% 的数据,n1000n \le 1000
  • 对于 100%100\% 的数据,1n105,0ai11 \le n \le 10^5, 0 \le a_i \le 1,且数列中至少不好一个数值为 11 的元素