有人(不是我!)称一个由非负整数组成的长度为 $n$ 的数组是“好的”,当且仅当对于所有 $1 \le i < n$,满足 $a_i \cdot a_{i+1} \cdot \min(a_i, a_{i+1}) \le C$。
另一个人(我们与他们无关!)给了你一个长度为 $n$ 的数组,其中包含一些空位。请计算有多少种填充空位的方法使得该数组是“好的”,或者确定是否存在无穷多种方法。如果方案数是有限的,请输出其对 $998\,244\,353$ 取模的结果。
输入格式
第一行包含两个整数 $n$ 和 $C$ ($1 \le n \le 10^6, 0 \le C \le 10^{18}$),分别表示数组的长度和乘积约束。
第二行包含数组 $a$。每个元素要么是 $-1$(表示需要填充),要么是 $0$ 到 $10^{18}$ 之间的整数(包含边界)。
输出格式
如果方案数有无穷多种,输出 $-1$,否则输出方案数对 $998\,244\,353$ 取模的结果。
样例
输入 1
4 100 -1 7 2 -1
输出 1
104
输入 2
4 100 10 -1 -1 1
输出 2
240
输入 3
1 0 -1
输出 3
-1
输入 4
2 10 10 10
输出 4
0