#include <iostream>
using namespace std;
#include <vector>
#include <algorithm>
bool OK(long long mid,long long x, long long y,long long n){
long long m=min(x,y);
if (mid<m){
return false;
}
return (mid-m)/x+(mid-m)/y>=n-1;
}
void solve(){
long long n,x,y;
cin>>n>>x>>y;
long long left=0;
long long right=1e18;
while(right-left>1){
long long mid=(left+right)/2;
if (OK(mid,x,y,n)){
right=mid;
}
else{
left=mid;
}
}
cout<<right<<'\n';
}
int main(){
solve();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgpib29sIE9LKGxvbmcgbG9uZyAgbWlkLGxvbmcgbG9uZyAgeCwgbG9uZyBsb25nICB5LGxvbmcgbG9uZyBuKXsKCWxvbmcgbG9uZyBtPW1pbih4LHkpOwoJaWYgKG1pZDxtKXsKCQlyZXR1cm4gZmFsc2U7Cgl9CglyZXR1cm4gKG1pZC1tKS94KyhtaWQtbSkveT49bi0xOwp9CnZvaWQgc29sdmUoKXsKCWxvbmcgbG9uZyAgbix4LHk7CgljaW4+Pm4+Png+Pnk7Cglsb25nIGxvbmcgbGVmdD0wOwoJbG9uZyBsb25nIHJpZ2h0PTFlMTg7Cgl3aGlsZShyaWdodC1sZWZ0PjEpewoJCWxvbmcgbG9uZyBtaWQ9KGxlZnQrcmlnaHQpLzI7CgkJaWYgKE9LKG1pZCx4LHksbikpewoJCQlyaWdodD1taWQ7CgkJfQoJCWVsc2V7CgkJCWxlZnQ9bWlkOwoJCX0KCX0KCWNvdXQ8PHJpZ2h0PDwnXG4nOwp9CmludCBtYWluKCl7Cglzb2x2ZSgpOwp9