#ARC169C. 不那么连续

不那么连续

不那么连续

时间限制:2s
空间限制:512MB

题目描述

给定整数 NN。一个长度为 NN 的整数序列 x=(x1,x2,…,xN)x=(x_1,x_2,\ldots,x_N) 称为好序列,当且仅当它满足以下条件:每个元素都是 11 到 NN 之间的整数;对于每个整数 ii,序列中不存在连续 i+1i+1 个或更多元素都等于 ii 的位置。

现在给定长度为 NN 的序列 A=(A1,A2,…,AN)A=(A_1,A_2,\ldots,A_N),其中每个元素是 −1-1 或 11 到 NN 之间的整数。把每个 −1-1 替换为 11 到 NN 之间的任意整数,求能得到多少个好序列。答案对 998244353998244353 取模。

输入格式

第一行输入一个整数 NN。

第二行输入 NN 个整数 A1,A2,…,ANA_1,A_2,\ldots,A_N。

输出格式

输出满足条件的替换方案数对 998244353998244353 取模后的结果。

样例输入 1

2
-1 -1

样例输出 1

3

样例输入 2

3
2 -1 2

样例输出 2

2

样例输入 3

4
-1 1 1 -1

样例输出 3

0

样例输入 4

20
9 -1 -1 -1 -1 -1 -1 -1 -1 -1 7 -1 -1 -1 19 4 -1 -1 -1 -1

样例输出 4

128282166

数据范围

对于所有数据,1≤N≤50001\le N\le5000,且 Ai=−1A_i=-1 或 1≤Ai≤N1\le A_i\le N。

子任务编号 分值 特殊限制
1 10 N≤7N\le7
2 20 N≤35N\le35
3 30 N≤300N\le300
4 10 所有 AiA_i 均不为 −1-1
5 30 无特殊限制