OUPC2025 OPENコンテスト 2026/03/29 09:00 ~ 2026/03/29 14:00 5:00:00.000

F Balanced Grid Increments

問題
制限時間: 2 sec メモリ制限: 1024 MB
Balanced Grid Increments
Statement

長さ \(N\) の正整数列 \(A = (A_1, A_2, \dots, A_N)\) が与えられます。 \(N\) 行 \(N\) 列のマス目があり、各マスには \(0\) が書かれています。

マス目に対して、以下の操作を \(0\) 回以上行います。

  • マスを \(1\) つ選び、そのマスに書かれている値を \(1\) 増やす。

操作終了後のマス目が以下の条件をすべて満たすような操作列の個数を \(998244353\) で割ったあまりを求めてください。

  • 条件 \(1\):(\(i\) 行目のマスに書かれた値の和) と (\(i\) 列目のマスに書かれた値の和)の和は \(A_i\) 以下
  • 条件 \(2\): 任意のマスについて、そのマスに書かれている値を \(1\) 増やすと条件 \(1\) を満たさなくなる

Input

入力は以下の形式で標準入力から与えられます。

\(N\)
\(A_1~A_2~\dots~A_N\)
入力は以下の制約をすべて満たします。
  • \(1 \leq N \leq 2 \times 10^5\)
  • \(1 \leq A_i\)
  • \(\displaystyle \sum_{i=1}^{N} A_i \leq 10^7\)
  • 入力はすべて整数

Scoring

以下の追加制約を満たすデータセットに正解した場合、部分点が与えられます。

  • (15点): \(A_i = 1\)
  • (15点): \(N \leq 2\)
  • (70点): 追加制約はありません。

Examples

Input 1
2
4 1
Output 1
5
Input 2
3
1 1 1
Output 2
6
Input 3
10
1 1 2 3 5 8 13 21 34 55
Output 3
393485314

Note

\(1\) つ目の入出力例について、例えば以下のような操作方法が考えられます。

  • \(1\) 回目の操作で \(1\) 行目 \(1\) 列目のマスを選び、\(2\) 回目の操作で \(1\) 行目 \(2\) 列目のマスを選ぶ。
  • \(1\) 回目の操作で \(1\) 行目 \(2\) 列目のマスを選び、\(2\) 回目の操作で \(1\) 行目 \(1\) 列目のマスを選ぶ。