問題文

線形合同法はひと昔前の乱数生成によく使われていた方法です。 周期が長くないため、現在ではあまり使われていません。

線形合同法ではパラメータ M,a,b,cM, a, b, c を決め、乱数列 xnx_n を次のように定義します。

x0=cxn+1=(axn+b)modM\begin{aligned} x_0 &= c \\ x_{n + 1} &= (a x_n + b) \bmod M \end{aligned}

この問題においては、 M=998244353M = 998244353 とします。

TT 個のテストケースに対して、以下の問題の答えを出力してください。

  • a,b,c,na, b, c, n が与えられたとき、乱数列の nn 番目の値 xnx_n を答えてください。

制約

  • 1T1051 \le T \le 10^{5}
  • 0ai,bi,ci,ni1090 \le a_i, b_i, c_i, n_i \le 10^9
  • 入力は全て整数である

入力

Ta1 b1 c1 n1a2 b2 c2 n2aT bT cT nTT\\ a_1\ b_1\ c_1\ n_1\\ a_2\ b_2\ c_2\ n_2\\ \vdots\\ a_T\ b_T\ c_T\ n_T

出力

TT 行出力してください。 i=1,2,,Ti = 1, 2, \ldots, T について、 ii 行目には ii 番目のテストケースの答えを出力してください。

入出力例

入力例
5
2 1 1 5
1 3 3 3
15311432 0 1 8388608
3 1 1 1000000000
123 456 789 10
出力例
63
12
1
351549422
639657991

提出


Go (1.21)