#include <bits/stdc++.h>
using namespace std;
int find_min_time(int time1, int time2, int n)
{
if (time1 < time2) swap(time1,time2);
int left = 0, right = max(time1, time2)*n;
while (left < right)
{
int middle = (left + right)/2;
if ((middle - time2)/time2 + (middle - time2)/time1 + 1 >= n)
right = middle;
else
{
left = middle + 1;
}
}
return right;
}
int main()
{
int time1,time2,n;
cin >> n >> time1 >> time2;
cout << find_min_time(time1,time2,n) << '\n';
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgZmluZF9taW5fdGltZShpbnQgdGltZTEsIGludCB0aW1lMiwgaW50IG4pCnsKICBpZiAodGltZTEgPCB0aW1lMikgc3dhcCh0aW1lMSx0aW1lMik7CiAgaW50IGxlZnQgPSAwLCByaWdodCA9IG1heCh0aW1lMSwgdGltZTIpKm47CiAgd2hpbGUgKGxlZnQgPCByaWdodCkKICB7CiAgICBpbnQgbWlkZGxlID0gKGxlZnQgKyByaWdodCkvMjsKICAgIGlmICgobWlkZGxlIC0gdGltZTIpL3RpbWUyICsgKG1pZGRsZSAtIHRpbWUyKS90aW1lMSArIDEgPj0gbikKICAgICAgcmlnaHQgPSBtaWRkbGU7CiAgICBlbHNlCiAgICB7CiAgICAgIGxlZnQgPSBtaWRkbGUgKyAxOwogICAgfQogICAgCiAgfQogIHJldHVybiByaWdodDsKfQoKaW50IG1haW4oKSAKewogIGludCB0aW1lMSx0aW1lMixuOwogIGNpbiA+PiBuID4+IHRpbWUxID4+IHRpbWUyOwogIGNvdXQgPDwgZmluZF9taW5fdGltZSh0aW1lMSx0aW1lMixuKSA8PCAnXG4nOwogIHJldHVybiAwOwp9