#gw2015j. [gw2015_j]ピラミッド - 2D編
[gw2015_j]ピラミッド - 2D編
問題文
伊織ちゃんのマイブームはピラミッドである。
伊織ちゃんはピラミッドを題材にした問題を思いついた。しかし、その問題は既出の問題だということが発覚し、伊織ちゃんは拗ねてしまった。そして、伊織ちゃんは別の問題を考えることにした。
段数が無限である 次元のピラミッドを考える。上から 段目の左から 個目の石を石 と呼ぶことにする。石 と石 を取ることを考える。石 を取るためには、石 と石 を先に取らなければならない( または または となる場合は石が最初から存在しないため取る必要はない)。石 と石 を取る方法であって、取る石の個数が最小となるような取り方は何通りあるだろうか?ただし、取り方は石を取る順番によって区別され、石を取る順番が異なる時 つの取り方は違う取り方であるということにする。また、同じタイミングで つ以上の石を取ることはできない。
入力
入力は以下の形式で標準入力から与えられる。
:
- 行目には、テストケースの個数を表す整数 が与えられる。
- 行目からの 行には、各テストケースの情報が与えられる。このうち 行目には、 つの整数 $A_i (1 ≦ A_i ≦ 10^6), B_i (1 ≦ B_i ≦ A_i), C_i (1 ≦ C_i ≦ 10^6), D_i (1 ≦ D_i ≦ C_i)$ が与えられる。これは、 番目テストケースにおける の値を表す。ただし、 または が成り立つことが保証されている。また、取る必要のある石の個数が 個を超えないことも保証されている。
出力
出力は 行からなる。このうち 行目には、 番目のテストケースの答えを で割った余りを出力せよ。出力の末尾にも改行を入れること。
入力例1
6
2 1 2 2
1 1 1000000 1000000
3 2 5 3
5 2 4 3
2015 55 1700 1300
100 50 1000 500
出力例1
2
1
42
252
926737422
143485143
個目のテストケースでは以下の 通りの取り方がある。
- 石 、石 、石 の順に取る。
- 石 、石 、石 の順に取る。