小红书算法团队为了优化用户等级历史贡献统计,记录了一个长度为 n 的数组 (a1,a2,…,an) 。该数组中的元素均为正整数,并满足非严格递增关系: a1≤a2≤...≤an 。
但由于网络波动,小红书后台日志中部分位置的值丢失,用 ai=0 表示丢失数据;题目保证a1,an 不为 0 .
请统计符合上述要求的原始数组的可能方案数。由于方案数可能非常大,请将结果对(109+7) 取模后输出。
在一行上输入一个整数 n(1≤n≤2∗105) ,表示数组长度。
在第二行输入 n 个整数 a1,a2,an(0≤ai≤109) ,其中 a=0 表示丢失数据,其余位置满足非严格通增关系。
在一行上输出一个整数,表示符合条件的原始数组的方案数对 (109+7) 取模后的结果
输入
3
1 0 5
输出
5
说明
本题中,如果您需要使用到除法的取模,即计算 (p∗q−1 mod M) 时,q−1 需要使用公式 (qM−1 mod M) 得到。例如,计算 5/4 mod M:
(45modM)4−1
4−1=(4M−2 mod M) =250 000 002
(45 mod M)=5×4−1 mod M =5×250 000 002 mod M =250 000 003
非严格递增:对于数组(a1,a2,...,an),若对任意 1≤i<n 都有 ai≤ai+1 则称该数组为非严格递增数组。