#agc021f. [agc021_f]Trinity
[agc021_f]Trinity
問題文
縦 マス、横 マスのマス目があります。 行目、 列目にあるマスを とあらわすことにします。 特に、一番左上のマスは と、一番右下のマスは とあらわされます。 高橋君は 個以上のいくつかのマスを黒く、他のマスを白く塗りました。
長さ の数列 と、長さ の数列 をそれぞれ以下のように定義するとき、列の組 としてありうるものの個数を で割った余りを求めてください。
- は、マス が黒く塗られているような最小の (存在しない場合、)
- は、マス が黒く塗られているような最小の (存在しない場合、)
- は、マス が黒く塗られているような最大の (存在しない場合、)
注意
この問題では、提出できるソースコードのサイズは B 以下に制限される。 制限を超える長さの提出は無効とするので注意すること。
制約
- は整数である
部分点
- を満たすデータセットに正解すると、 点が与えられる。
入力
入力は以下の形式で標準入力から与えられる。
出力
列の組 の個数を で割った余りを出力せよ。
入力例 1
2 3
出力例 1
64
なので、 の情報から、各列の黒く塗られたマスの配置が一意に定まります。各 について、 の組は の 通りなので、答えは 通りです。
入力例 2
4 3
出力例 2
2588
入力例 3
17 13
出力例 3
229876268
入力例 4
5000 100
出力例 4
57613837