#include #include #include #include #include #define setIO(x) freopen(x".in", "r", stdin), freopen(x".out", "w", stdout) #define closefile fclose(stdin), fclose(stdout) #define m_p make_pair #define sz(x) (int)x.size() #define see(x) cerr << x << " " #define seeln(x) cerr << x << endl #define out(x) cerr << #x << " = " << x << " " #define outln(x) cerr << #x << " = " << x << endl #define outarr(x, l, r) {cerr << #x"[" << l << " ~ " << r << "] = "; for (int _i = l; _i <= r; ++_i) cerr << x[_i] << " "; cerr << endl;} using namespace std; typedef long long ll; typedef pair pii; template bool checkmax(T &a, T b){return a < b ? a = b, 1 : 0;} template bool checkmin(T &a, T b){return b < a ? a = b, 1 : 0;} const int mod = 998244353; int a, b; void add(int &a, int b){a += b; (a >= mod) && (a -= mod);} int Mul(int a, int b){return (ll)a * b % mod;} struct mat { int a[2][2]; mat(){memset(a, 0, sizeof a);} }; mat operator * (mat a, mat b) { mat c; for (int i = 0; i < 2; ++i) { for (int k = 0; k < 2; ++k) { for (int j = 0; j < 2; ++j) { add(c.a[i][j], Mul(a.a[i][k], b.a[k][j])); } } } return c; } void init() { scanf("%d%d", &a, &b); int k; scanf("%d", &k); mat M; M.a[0][0] = M.a[0][1] = M.a[1][0] = 1; M.a[1][1] = mod - 1; mat A; A.a[0][0] = a, A.a[0][1] = b; while (k) { if (k & 1) A = A * M; M = M * M; k >>= 1; } printf("%d %d\n", A.a[0][0], A.a[0][1]); } void solve() { } int main() { int t; scanf("%d", &t); while (t--) { init(); solve(); } return 0; }