#include <bits/stdc++.h>
using namespace std;
long long Power(long long n, long long x, long long mod) {
  long long ans = 1;
  while (x > 0) {
    if (x & 1) ans = (ans * n) % mod;
    n = (n * n) % mod;
    x = x >> 1;
  }
  return ans;
}
bool sortbysec(const pair<long long, long long> &a,
               const pair<long long, long long> &b) {
  return (a.second < b.second);
}
bool isPrime(long long n) {
  if (n <= 1) return false;
  if (n <= 3) return true;
  if (n % 2 == 0 || n % 3 == 0) return false;
  for (long long i = 5; i * i <= n; i = i + 6)
    if (n % i == 0 || n % (i + 2) == 0) return false;
  return true;
}
long long getSum(long long n) {
  long long sum = 0;
  while (n != 0) {
    sum = sum + n % 10;
    n = n / 10;
  }
  return sum;
}
long long myceil(long long n, long long x) {
  long long y;
  if (n % x == 0) {
    y = n / x;
    return y;
  } else {
    y = n / x + 1;
    return y;
  }
}
long long maxCountSameSUM(long long arr[], long long n) {
  unordered_map<long long, long long> M;
  for (long long i = 0; i < n - 1; i++)
    for (long long j = i + 1; j < n; j++) M[(arr[i] + arr[j])]++;
  long long max_count = 0;
  for (auto ele : M)
    if (max_count < ele.second) max_count = ele.second;
  return max_count;
}
void q1();
void q2();
void q3();
int32_t main() {
  long long test_case;
  cin >> test_case;
  while (test_case--) {
    q1();
  }
  return 0;
}
void q1() {
  long long x, y, k;
  cin >> x >> y >> k;
  long long count = 0;
  count += k;
  long long p = k * y + k - 1;
  if (p % (x - 1) == 0) {
    count += p / (x - 1);
  } else {
    count += p / (x - 1) + 1;
  }
  cout << count << "\n";
}
void q2() {
  long long n;
  cin >> n;
  long long a[n], l[n];
  vector<long long> res(n, -1);
  vector<long long> v;
  for (long long i = 0; i < n; i++) cin >> a[i];
  for (long long i = 0; i < n; i++) cin >> l[i];
  for (long long i = 0; i < n; i++) {
    if (l[i] == 1) {
      res[i] = a[i];
    } else {
      v.push_back(a[i]);
    }
  }
  if (!v.empty()) {
    sort(v.begin(), v.end());
    long long k = 0;
    long long s;
    for (long long i = 0; i < n; i++) {
      if (res[i] == -1) {
        res[i] = v[k];
        s = abs(v[k]);
        v.erase(v.begin());
        break;
      }
    }
    if (!v.empty()) {
      for (long long i = 0; i < n; i++) {
        if (res[i] == -1) {
          long long q = lower_bound(v.begin(), v.end(), s) - v.begin();
          if (q == v.size()) q = 0;
          res[i] = v[q];
          s = abs(v[q]);
          v.erase(v.begin() + q);
        }
      }
    }
  }
  for (long long i = 0; i < n; i++) cout << res[i] << " ";
  cout << "\n";
}
