#S1106b. 直与曲的梦乡

直与曲的梦乡

题目描述

给定一个长为 NN 的非负整数序列 AA,满足 0Ai<i0 \leq A_i < i。问有多少个 1N1 \sim N 的排列 PP 满足:i[1,N]\forall i \in [1,N],对于 Ai<j<iA_i < j < iPj>PiP_j > P_i,如果 Ai>0A_i > 0PAi<PiP_{A_i} < P_i。答案对 998244353998244353 取模。

输入格式

第一行一个整数 NN

第二行 NN 个整数,表示序列 AA

输出格式

一行一个整数表示答案。

样例

4
0 1 0 3
3
22
0 1 2 2 2 2 2 2 1 9 9 9 9 0 14 15 15 15 14 19 19 19
353820794

样例解释

满足第一组样例输入数据的三个排列为 (2,3,1,4),(2,4,1,3),(3,4,1,2)(2,3,1,4),(2,4,1,3),(3,4,1,2)

数据范围

10%10\% 的数据满足 N10N \leq 10

0Ai<i0 \leq A_i < i1N1061 \leq N \leq 10^6

输入数据保证至少存在一个排列满足题目给出的条件。