#include <set>
#include <bitset>
#include <list>
#include <map>
#include <stack>
#include <queue>
#include <deque>
#include <string>
#include <vector>
#include <ios>
#include <iostream>
#include <fstream>
#include <sstream>
#include <iomanip>
#include <algorithm>
#include <utility>
#include <complex>
#include <numeric>
#include <functional>
#include <cmath>
#include <ctime>
#include <climits>
#include <cstdarg>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cctype>
#include <cassert>
using namespace std;
const int INF = 0x7FFFFFFF;
const unsigned long long MOD = 18446744073709551615uLL;
//18446744073709551615
const double EPS = 1e-10;
const double PI = 2 * acos (0.0);
const int maxn = 2;
unsigned long long n = 2;//表示方阵的尺寸,必须恰好为运算的大小
//申请变量
struct Mat
{
unsigned long long mat[maxn][maxn];
};
//重载Mat乘法运算
Mat operator * (Mat a, Mat b)
{
Mat c;
memset (c.mat, 0, sizeof (c.mat));
for (unsigned long long k = 0; k < n; k++)
{
for (unsigned long long i = 0; i < n; i++)
{
if (a.mat[i][k] == 0) continue;
for (unsigned long long j = 0; j < n; j++)
{
if (b.mat[k][j] == 0) continue;
//c.mat[i][j] = (c.mat[i][j] + ((a.mat[i][k] % MOD) * (b.mat[k][j] % MOD) % MOD)) % MOD;
c.mat[i][j] = (c.mat[i][j] + (a.mat[i][k] * b.mat[k][j]) % MOD) % MOD;
}
}
}
return c;
}
//重载Mat乘幂运算
Mat operator ^ (Mat a, unsigned long long k)
{
Mat c;
for (unsigned long long i = 0; i < n; i++)
for(unsigned long long j = 0; j < n; j++)
c.mat[i][j] = (i == j);
while (k)
{
if(k & 1)
c = c * a;
a = a * a;
k >>= 1;
}
return c;
}
int main()
{
// ifstream cin ("aaa.txt");
// freopen ("aaa.txt", "r", stdin);
Mat aa;
int t, flag =1;
scanf ("%d", &t);
while (t--)
{
unsigned long long p, q, n;
scanf ("%llu%llu%llu", &p, &q, &n);
printf ("Case %d: ", flag++);
if (n == 0)
puts ("2");
else if (n == 1)
printf ("%llu\n", p % MOD);
//cout << p % MOD << endl;
else if (n == 2)
printf ("%llu\n", (p * p - 2 * q) % MOD);
//cout << (p * p - 2 * q) % MOD << endl;
else
{
aa.mat[0][0] = p, aa.mat[0][1] = -q;
aa.mat[1][0] = 1, aa.mat[1][1] = 0;
Mat bb = aa ^ (n - 2), cc;
// cout << aa.mat[0][0] << " " << aa.mat[0][1] << endl;
// cout << aa.mat[1][0] << " " << aa.mat[1][1] << endl;
cc.mat[0][0] = (p * p - 2 * q) % MOD;
cc.mat[1][0] = p % MOD;
bb = bb * cc;
//printf ("%ulld\n", (bb.mat[0][0] + MOD) % MOD);
if (bb.mat[0][0] > 0)
printf ("%llu\n", bb.mat[0][0] % MOD);
//cout << bb.mat[0][0] % MOD << endl;
else
printf ("%llu\n", (bb.mat[0][0] + MOD) %MOD);
//cout << (bb.mat[0][0] + MOD) % MOD + 1<< endl;
}
}
return 0;
}