#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using ld = long double; using ll = long long; using ull = unsigned long long; template using pq = priority_queue; template using pqg = priority_queue, greater>; template inline bool chmin(T& a, const U& b) { if (a > b) { a = b; return 1; } return 0; } template inline bool chmax(T& a, const U& b) { if (a < b) { a = b; return 1; } return 0; } #define all(v) begin(v), end(v) void solve() { ll a, b, k; cin >> a >> b >> k; auto f = [&](ll x) { ll sum = 0; sum += x / a; sum += x / b; sum -= x / lcm(a, b); return (x - sum) <= k; }; ll l = 1, r = 2e18 + 10; while (r - l > 1) { ll m = (l + r) / 2; if (f(m)) l = m; else r = m; } cout << l << endl; } int main(void) { int t; cin >> t; while (t--) solve(); return 0; }