#agc041f. [agc041_f]Histogram Rooks

[agc041_f]Histogram Rooks

题目描述

考虑一个由 NNNN 列方格组成的网格。阿博克裁剪了网格的一部分,对于每个 i=1,2,ldots,Ni = 1,2,\\ldots,N,从左边起,第 ii 列的底部 hih_i 个方格保留下来。现在,他想要在剩余的方格中放置车。

车是国际象棋中的一种棋子,占据一个方格,并且可以水平或垂直移动,通过任意数量的未被占据的方格。车不能穿过阿博克裁剪掉的方格。

我们定义:如果一个方格被覆盖,那么它要么包含一个车,要么可以在一步内将车移动到该方格。

找到一种在剩余的方格中放置车的方法数,使得每个剩余的方格都被覆盖,结果对 998244353998244353 取模。

约束条件

  • 1N4001 \leq N \leq 400
  • 1hiN1 \leq h_i \leq N
  • 所有输入值均为整数。

输入

输入以以下格式从标准输入中给出:

N
h_1 h_2 ... h_N

输出

输出放置车的方法数,使得每个剩余的方格都被覆盖,结果对 998244353998244353 取模。

示例输入 1

2
2 2

示例输出 1

11

任何至少有两个车的放置方法都是可以接受的。共有 1111 种这样的放置方法。

示例输入 2

3
2 1 2

示例输出 2

17

以下 1717 种车的放置方法满足条件(R 表示一个车,* 表示一个空方格):

R *     * R     * *     R R     R R     R R     
**R     R**     R*R     R**     *R*     **R     


R *     R *     * R     * R     * *     R R     
R*R     *RR     RR*     R*R     RRR     RR*     


R R     R R     R *     * R     R R     
R*R     *RR     RRR     RRR     RRR     

示例输入 3

4
1 2 4 1

示例输出 3

201

示例输入 4

10
4 7 4 8 4 6 8 2 3 6

示例输出 4

263244071