[AGC026D] Histogram Coloring

题意翻译

给定 $N$ 列的网格,每列高为 $h_i$,将每个格子染色成红色或蓝色,使得每个 $2\times2$ 的区域都恰好有两个蓝格子和两个红格子,求方案数。

题目描述

[problemUrl]: https://atcoder.jp/contests/agc026/tasks/agc026_d 高さ $ 10^9 $ マス,幅 $ N $ マスのグリッドを考え,左から $ i(1\ \leq\ i\ \leq\ N) $ 番目,下から $ j(1\ \leq\ j\ \leq\ 10^9) $ 番目のマス目を $ (i,\ j) $ と表すことにします。 すぬけ君は各 $ i\ =\ 1,\ 2,\ ...,\ N $ について,左から $ i $ 列目のマスたちを,下から $ h_i $ 個を残すように切り取りました。 そして赤,青の絵の具を使い,マス目を絵の具で塗ります。 以下の条件を満たすような塗り分け方は何通りか求めて下さい。ただし答えは非常に大きくなるので,$ 10^9+7 $ で割った余りを出力して下さい。 - 全ての(切り取った後に残された)マスたちは,赤,青のどちらかの色に塗られている。 - 全ての $ 1\ \leq\ i\ \leq\ N-1 $, $ 1\ \leq\ j\ \leq\ min(h_i,\ h_{i+1})-1 $ について,$ (i,\ j),\ (i,\ j+1),\ (i+1,\ j),\ (i+1,\ j+1) $ の4マスのなかにちょうど $ 2 $ 個ずつ赤色と青色のマスが存在する。

输入输出格式

输入格式


入力は以下の形式で標準入力から与えられる。 > $ N $ $ h_1 $ $ h_2 $ $ ... $ $ h_N $

输出格式


塗り分け方の個数を $ 10^9+7 $ で割った余りを出力せよ。

输入输出样例

输入样例 #1

9
2 3 5 4 1 2 4 2 1

输出样例 #1

12800

输入样例 #2

2
2 2

输出样例 #2

6

输入样例 #3

5
2 1 2 1 2

输出样例 #3

256

输入样例 #4

9
27 18 28 18 28 45 90 45 23

输出样例 #4

844733013

说明

### 制約 - $ 1\ \leq\ N\ \leq\ 100 $ - $ 1\ \leq\ h_i\ \leq\ 10^9 $ ### Sample Explanation 1 以下に塗り分け方の一例を示します。 ``` \# \#\# \# \#\#\# \#\#\#\#\# \#\#\#\#\#\#\#\#\#\#\#\#``` ### Sample Explanation 2 以下の $ 6 $ 通りの塗り分け方が存在します。 ``` \#\# \#\# \#\# \#\# \#\# \#\#\#\# \#\# \#\# \#\# \#\# \#\#``` ### Sample Explanation 3 どのような塗り分け方も条件を満たします。 ### Sample Explanation 4 塗り分け方の個数を $ 10^9\ +\ 7 $ で割った余りを出力することに注意して下さい。