AT_mujin_pc_2018_f チーム分け
Description
[problemUrl]: https://atcoder.jp/contests/mujin-pc-2018/tasks/mujin_pc_2018_f
$ N $ 人を、それぞれの人がただ $ 1 $ つのチームに属するようにチーム分けを行います。
しかし、人によっては多くの人が属するチームに属したくないと考えています。
この条件は $ N $ 要素からなる整数列 $ a $ で表され、$ i $ 番目の人は $ a_{i} $ 人以下から成るチームに配属されることになります。
チーム分けをするに当たってこのようなチーム分けは何通り考えられるのかを計算したくなりました。答えは非常に大きくなることがあるので、$ 998244353 $ で割ったあまりを出力してください。ただし、$ 2 $ つのチーム分けが異なるとは、ある $ 2 $ 人が存在して、片方のチーム分けでは同じチームに属するがもう片方のチーム分けでは違うチームに属する、という場合を表します。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ N $ $ a_1 $ $ a_2 $ ... $ a_{N-1} $ $ a_N $
Output Format
条件を満たすチーム分けの方法の場合の数を $ 998244353 $ で割ったあまりを出力せよ。
Explanation/Hint
### 制約
- $ 1\ \leq\ N\ \leq\ 1000 $
- $ 1\ \leq\ a_i\ \leq\ N $
- 入力は全て整数である
### Sample Explanation 1
$ 1 $ 人をチーム分けする方法は $ 1 $ 通りです。
### Sample Explanation 2
条件を満たすチーム分けは、$ ((1),(2),(3)),\ ((1,2),(3)),\ ((1,3),(2)),\ ((2,3),(1)) $ の $ 4 $ 通りです。