#include using namespace std; int T; const int MOD=998244353; struct Matrix { int z[3][3]; Matrix () { memset(z, 0, sizeof z); } Matrix operator * (Matrix X) { Matrix RES; for(int k=1; k<=2; k++) { for(int i=1; i<=2; i++) { for(int j=1; j<=2; j++) { RES.z[i][j]+=1ll*z[i][k]*X.z[k][j]%MOD; RES.z[i][j]%=MOD; } } } return RES; } }; Matrix power(Matrix X, int y) { Matrix RES; RES.z[1][1]=RES.z[2][2]=1; for(Matrix NOW=X; y>0; y>>=1, NOW=NOW*NOW) if(y&1) RES=RES*NOW; return RES; } int main() { Matrix BASE; BASE.z[1][1]=1; BASE.z[1][2]=1; BASE.z[2][1]=1; BASE.z[2][2]=-1; scanf("%d", &T); for(int a, b, t; T; --T) { scanf("%d%d%d", &a, &b, &t); Matrix base=power(BASE, t); int resa, resb; resa=(1ll*base.z[1][1]*a%MOD+1ll*base.z[1][2]*b%MOD)%MOD; resb=(1ll*base.z[2][1]*a%MOD+1ll*base.z[2][2]*b%MOD)%MOD; if(resa<0) resa+=MOD; if(resb<0) resb+=MOD; printf("%d %d\n", resa, resb); } return 0; }