atcoder#CF17FINALG. Mancala

Mancala

题目描述

以下のようなゲームを考えます。

  • 1 1 列に並んだ N N 個のマスとたくさんの石を用意する。
  • 最初に、マス i (1  i  N) i\ (1\ \leq\ i\ \leq\ N) ai a_i 個の石を入れる。
  • プレイヤーは「ちょうど i i 個の石が入っているようなマス i i 1 1 つ選び、そこに入っている石を全て捨て、マス 1 1 からマス i1 i-1 までの i1 i-1 個のマスに石を 1 1 つずつ追加する」という操作を好きなだけ行う。
  • 最終的にマスに残った石の個数の合計がスコアとなる。

長さ N N の数列 a a に対してこのゲームを行ったときのスコアとして考えられる最小値を f(a) f(a) とします。

このとき、長さが N N で各要素が 0 0 以上 K K 以下であるような全ての数列 a a についての f(a) f(a) の総和はいくつになるでしょうか? 答えは非常に大きくなる可能性があるため、1000000007 (= 109+7) 1000000007\ (=\ 10^9+7) で割った余りを求めてください。

输入格式

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

N N K K

输出格式

f(a) f(a) の総和を 1000000007 (= 109+7) 1000000007\ (=\ 10^9+7) で割った余りを出力せよ。

2 2
10
20 17
983853488

提示

制約

  • 1  N  100 1\ \leq\ N\ \leq\ 100
  • 1  K  N 1\ \leq\ K\ \leq\ N

Sample Explanation 1

長さが 2 2 で各要素が 0 0 以上 2 2 以下であるような数列 a a 9 9 通り考えられますが、それぞれに対する f(a) f(a) の値とそれを達成するための操作の例は以下の通りです。 - f({0,0}) f(\{0,0\}) 0 0 (なにも操作できない) - f({0,1}) f(\{0,1\}) 1 1 (なにも操作できない) - f({0,2}) f(\{0,2\}) 0 0 (マス 2 2 、マス 1 1 の順に操作する) - f({1,0}) f(\{1,0\}) 0 0 (マス 1 1 を選ぶ) - f({1,1}) f(\{1,1\}) 1 1 (マス 1 1 を選ぶ) - f({1,2}) f(\{1,2\}) 0 0 (マス 1 1 、マス 2 2 、マス 1 1 の順に操作する) - f({2,0}) f(\{2,0\}) 2 2 (なにも操作できない) - f({2,1}) f(\{2,1\}) 3 3 (なにも操作できない) - f({2,2}) f(\{2,2\}) 3 3 (マス 2 2 を選ぶ)