C - 積まれた本

Time Limit: 2 sec / Memory Limit: 1024 MB

配点 : 100

問題文

N 冊の本が 1 列に積まれています。下から i 段目 (1 ≤ i ≤ N) の本の厚さは h_i です。

あなたは、積まれた本を 1 冊ずつ取り出そうとしています。 ある本の最高点の高さが H 以下であるならば、積まれた中でどこにあってもその本を取り出すことができます。 1 冊本を取り出すと、それより上にあった本が平行移動して降りてきます。

全ての本を取り出すとき、本を取り出す順番として可能なものの総数を求めてください。

制約

  • 1 ≤ N ≤ 10
  • 1 ≤ H ≤ 100
  • 1 ≤ h_i ≤ H
  • 入力で与えられる値は全て整数

入力

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

N H
h_1
:
h_N

出力

本を取り出す順番として可能なものの総数を出力せよ。


入力例 1

4 3
2
1
2
3

出力例 1

3

以下の 3 通りがあります。

  • 最初の状態で下から 1 段目、下から 2 段目、下から 3 段目、下から 4 段目にあるものを順に取り出す。
  • 最初の状態で下から 1 段目、下から 3 段目、下から 2 段目、下から 4 段目にあるものを順に取り出す。
  • 最初の状態で下から 2 段目、下から 1 段目、下から 3 段目、下から 4 段目にあるものを順に取り出す。

入力例 2

10 100
19
2
1
2
18
4
9
4
24
19

出力例 2

3225600