#hhkb2020d. [hhkb2020_d]Squares

[hhkb2020_d]Squares

問題文

整数 NN, AA, BB が与えられます。

辺の長さが NN の白い正方形を座標平面の (0,0),(N,0),(0,N),(N,N)(0,0), (N,0), (0,N), (N,N)44 頂点が重なるように置きます。

次に、この白い正方形の内部または周上に収まるように、辺の長さが AA の青い正方形と辺の長さが BB の赤い正方形を 11 つずつ置きます。

ただし、正方形のどの辺も xx 軸または yy 軸と平行に置かれている必要があります。

また、青い正方形と赤い正方形の各頂点は格子点上に置かれている必要があります。

赤い正方形の内部と青い正方形の内部が重ならないように置く方法の数を 1,000,000,0071,000,000,007 で割ったあまりを求めてください。

11 つの入力につき、TT 個のテストケースに答えてください。

制約

  • 1leqTleq1051 \\leq T \\leq 10^5
  • 1leqNleq1091 \\leq N \\leq 10^9
  • 1leqAleqN1 \\leq A \\leq N
  • 1leqBleqN1 \\leq B \\leq N
  • 入力は全て整数

入力

入力は以下の形式で標準入力から与えられる。入力の 11 行目は以下のとおりである。

TT

そして、 TT 個のテストケースが続く。これらはそれぞれ以下の形式で与えられる。

NN AA BB

出力

各テストケースについて、赤い正方形と青い正方形の内部が重ならないように置く方法の数を 1,000,000,0071,000,000,007 で割ったあまりを出力せよ。 各テストケースごとに改行せよ。


入力例 1

3
3 1 2
4 2 2
331895368 154715807 13941326

出力例 1

20
32
409369707

例えば最初のテストケースでは、重なりを気にせず青い正方形を置く方法が 99 通り、赤い正方形を置く方法が 44 通りあります。

赤い正方形をどこに置いても、赤い正方形の内部に重なるような青い正方形の置き方は 44 通りずつあります。

よって、赤い正方形の内部と青い正方形の内部が重ならないように置く方法の数は、 9times44times4=209 \\times 4 - 4 \\times 4 = 20 通りです。

赤い正方形と青い正方形が周上のみを共有するとき、例えば青い正方形の左下の頂点が (0,0)(0,0)、赤い正方形の左下の頂点が (0,1)(0,1) のときは赤い正方形と青い正方形の内部が重なっていないことに注意してください。