#include #define rep(i, n) for (int (i) = 0; (i) < (int)(n); (i)++) const int dx[] = {1, 0, -1, 0}; const int dy[] = {0, 1, 0, -1}; using namespace std; typedef long long ll; const ll INF = 1ll<<60; int main() { ll A, B, T; cin >> A >> B >> T; if (A < B) swap(A, B); if (T/A < 1000000) { ll best = INF; for (ll i = 0; i*A <= T; i++) { ll rest = T-i*A; if (rest % B == 0) best = T; else best = min(best,(rest/B+1)*B+i*A); } cout << best << endl; } else { ll g = __gcd(A, B); ll tmp = (A/g) * B; ll t = T%tmp; ll best = INF; for (ll i = 0; i*A <= t; i++) { ll rest = t-i*A; if (rest % B == 0) best = t; else best = min(best,(rest/B+1)*B+i*A); } cout << best + (T/tmp)*tmp << endl; } return 0; }