#include const int P=998244353; long long p=1ll*P*P; inline int mul(const int &a,const int &b){return 1ll*a*b%P;} inline int sub(int a,const int &b){a-=b;return (a<0)?a+P:a;} inline int add(int a,const int &b){a+=b;return(a>=P)?a-P:a;} int qsm(int a,int b){ int ans=1; while(b){ if(b&1)ans=mul(ans,a); a=mul(a,a); b>>=1; } return ans; } struct matrix{ int num[2][2]; matrix operator*(matrix a){ matrix c; for(int i=0;i<2;++i) for(int j=0;j<2;++j) c.num[i][j]=add(mul(num[i][0],a.num[0][j]),mul(num[i][1],a.num[1][j])); return c; } }; int T; matrix qsm(matrix a,int b){ matrix ans; for(int i=0;i<2;++i) for(int j=0;j<2;++j) ans.num[i][j]=(i==j); while(b){ if(b&1)ans=ans*a; a=a*a; b>>=1; } return ans; } int a,b,k; int main(){ scanf("%d",&T); for(int fd=1;fd<=T;++fd){ scanf("%d%d%d",&a,&b,&k); matrix f; f.num[0][0]=1; f.num[1][0]=1; f.num[0][1]=1; f.num[1][1]=P-1; f=qsm(f,k); printf("%d %d\n",add(mul(a,f.num[0][0]),mul(b,f.num[1][0])),add(mul(a,f.num[0][1]),mul(b,f.num[1][1]))); } }