#abc193e. [abc193_e]Oversleeping

[abc193_e]Oversleeping

問題文

AA と街 BB の間を往復する電車があります。 電車は時刻 00 に街 AA を出発した後、

  • XX 秒かけて街 BB に移動
  • BBYY 秒停車
  • XX 秒かけて街 AA に移動
  • AAYY 秒停車

を繰り返します。
より厳密には、これらは半開区間として扱います。すなわち、n=0,1,2,dotsn = 0, 1, 2, \\dots について、

  • (2X+2Y)nt<(2X+2Y)n+X(2X + 2Y)n ≤ t < (2X + 2Y)n + X を満たす時刻 tt には電車は街 BB に移動している
  • (2X+2Y)n+Xt<(2X+2Y)n+X+Y(2X + 2Y)n + X ≤ t < (2X + 2Y)n + X + Y を満たす時刻 tt には電車は街 BB で停車している
  • (2X+2Y)n+X+Yt<(2X+2Y)n+2X+Y(2X + 2Y)n + X + Y ≤ t < (2X + 2Y)n + 2X + Y を満たす時刻 tt には電車は街 AA に移動している
  • (2X+2Y)n+2X+Yt<(2X+2Y)(n+1)(2X + 2Y)n + 2X + Y ≤ t < (2X + 2Y)(n + 1) を満たす時刻 tt には電車は街 AA で停車している

が満たされます。

高橋くんは電車に乗って時刻 00 に街 AA を出発し、街 BB で電車を降りようと思っています。 高橋くんは時刻 00 に街 AA を出発した後、

  • PP 秒間眠っている
  • QQ 秒間起きている

を繰り返します。
これらも半開区間として扱います。すなわち、n=0,1,2,dotsn = 0, 1, 2, \\dots について、

  • (P+Q)nt<(P+Q)n+P(P + Q)n ≤ t < (P + Q)n + P を満たす時刻 tt には高橋くんは眠っている
  • (P+Q)n+Pt<(P+Q)(n+1)(P + Q)n + P ≤ t < (P + Q)(n + 1) を満たす時刻 tt には高橋くんは起きている

が満たされます。

BB に電車が停車しており、かつ、高橋くんが起きていれば高橋くんは街 BB で電車を降りることができます。
高橋くんが街 BB で電車を降りることができるか判定し、できる場合は、最短でいつになるか求めてください。
なお、この値はこの問題の制約下で整数になることが証明できます。

TT 個のケースが与えられるので、それぞれについて答えを求めてください。

制約

  • 入力は全て整数
  • 1T101 ≤ T ≤ 10
  • 1X1091 ≤ X ≤ 10^9
  • 1Y5001 ≤ Y ≤ 500
  • 1P1091 ≤ P ≤ 10^9
  • 1Q5001 ≤ Q ≤ 500

入力

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

TT rmcase1\\rm case_1 rmcase2\\rm case_2 hspace9ptvdots\\hspace{9pt}\\vdots rmcaseT\\rm case_T

各ケースは以下の形式で与えられる。

XX YY PP QQ

出力

TT 行出力せよ。
ii 行目には、rmcasei\\rm case_i についてこの問題を解き、街 BB で電車を降りられる時刻が存在する場合、そのような時刻のうち最小のものを整数で出力せよ。 街 BB で電車を降りられる時刻が存在しない場合、infinity と出力せよ。


入力例 1

3
5 2 7 6
1 1 3 1
999999999 1 1000000000 1

出力例 1

20
infinity
1000000000999999999

\[a,b)\[a, b) で区間 at<ba ≤ t < b を表すことにします。

11 個目のケースでは、電車が街 BB で停車している時刻は \[5,7),\[19,21),\[33,35),dots\[5, 7), \[19, 21), \[33, 35), \\dots 、 高橋くんが起きている時刻は \[7,13),\[20,26),\[33,39),dots\[7, 13), \[20, 26), \[33, 39), \\dots なので、時刻 2020 に初めて街 BB で電車を降りることが出来ます。