問題文
1 以上 N 以下の整数からなる長さ N の数列 A=(A1,A2,ldots,AN) が与えられます。
1 以上 N 以下の整数からなる長さ N の数列 B=(B1,B2,ldots,BN) のうち、全ての i=1,2,ldots,N に対して以下の条件を満たすものの個数を 998244353 で割ったあまりを求めてください。
- B の中に含まれる i の個数は Ai 個以下
- B の中に含まれる Bi の個数は Ai 個以下
制約
- 1leqNleq500
- 1leqAileqN
- 入力される数値は全て整数
入力
入力は以下の形式で標準入力から与えられる。
N
A1 A2 ldots AN
出力
答えを出力せよ。
入力例 1
3
1 2 3
出力例 1
10
条件を満たす数列は以下の 10 個です。
- (1,2,2)
- (1,2,3)
- (1,3,2)
- (1,3,3)
- (2,1,3)
- (2,3,1)
- (2,3,3)
- (3,1,2)
- (3,2,1)
- (3,2,2)
入力例 2
4
4 4 4 4
出力例 2
256
条件を満たす数列は、1 以上 4 以下の整数からなる長さ 4 の数列全てで、その個数は 44=256 個です。
入力例 3
5
1 1 1 1 1
出力例 3
120
条件を満たす数列は、(1,2,3,4,5) を並び替えて得られる数列全てで、その個数は 5!=120 個です。
入力例 4
14
6 5 14 3 6 7 3 11 11 2 3 7 8 10
出力例 4
628377683
個数を 998244353 で割ったあまりを出力してください。