本問題はフィボナッチ数列(★3 Edition)の強化版です。
正整数 N,M と長さ N の数列 A=(A1,A2,⋯,AN) が与えられます。
数列 X を以下のように定義します。
- 1≦i≦N ならば Xi=Ai
- i≧N+1 ならば Xi=Xi−1+Xi−2+⋯+Xi−N
XM を求めてください。答えが非常に大きくなる場合があるため、素数 109+7 で割った余りを出力してください。
T 個のテストケースが与えられるので、それぞれについて答えてください。
制約
- 1≦T≦100
- 1≦N≦10
- 1≦M≦1018
- 0≦Ai≦109+6
- 入力はすべて整数
入力
入力は以下の形式で標準入力から与えられます。
ここで、casei(i=1,2,⋯,T) は i 番目のテストケースです。
各テストケースは以下の形式で与えられます。
出力
標準出力に T 行出力してください。 i 行目 (i=1,2,⋯,T) には i 番目のテストケースについての答えを出力してください。
各テストケースについて、XM を素数 109+7 で割った余りを出力してください。
サンプル
入力
4
2 7
1 1
1 99999
0
9 10000000007
9 9 8 2 4 4 3 5 3
10 1000000000000000000
1 2 4 8 16 32 64 128 256 512
出力
13
0
104102534
502299872
この入力では、4 個のテストケースが与えられています。1,2,3 番目のテストケースについて、以下のことが言えます。
-
1 番目のテストケースについて、数列 X=(1,1,2,3,5,8,13,⋯) です。これの 7 項目は 13 です。
-
2 番目のテストケースについて、数列 X の各要素はすべて 0 です。
-
3 番目のテストケースについて、109+7 で割った余りを求めることと、計算過程で 32-bit 整数型の範囲を超える可能性があることに注意してください。