#include using namespace std; long long mul(long long a, long long b, long long m) { // (a1*10^6+a2) * (b1*10^6+b2) = // a1*b1*10^12 + (a1*b2 + a2*b1)*10^6 + a2*b2 long long a1 = a / 1000000, a2 = a % 1000000; long long b1 = b / 1000000, b2 = b % 1000000; long long x = a1 * (b1 * 1000000000000LL % m) % m; long long y = (a1 * b2 + a2 * b1) % m * 1000000 % m; long long z = a2 * b2; long long res = (x + y + z) % m; return res; } long long power(long long a, long long b, long long m) { long long x = 1, y = a; while(b) { if (b&1) { x = mul(x, y, m); } y = mul(y, y, m); b >>= 1; } return x; } long long gcd(long long a, long long b) { while(b) { long long r = a % b; a = b; b = r; } return a; } int main() { int t; cin >> t; while(t--) { long long a, b, n; cin >> a >> b >> n; assert(b <= a); assert(1 <= a && a <= 1000000000000LL); assert(1 <= b && b <= 1000000000000LL); assert(1 <= n && n <= 1000000000000LL); if (a == b) { cout << mul(2LL, power(a, n, 1000000007LL), 1000000007LL) << "\n"; continue; } long long ab = a - b; long long x = power(a, n, ab); long long y = power(b, n, ab); long long z = (x + y) % ab; long long ans = gcd(z, ab); ans %= 1000000007; cout << ans << "\n"; } return 0; }