#include <iostream>
#include <algorithm>
#include <numeric>
using namespace std;
long my_gcd(long a, long b) {
while (b) {
a %= b;
swap(a, b);
}
return a;
}
long my_lcm(long a, long b, long g) {
if (g == 0) return 0;
return (a / g) * b;
}
bool can_finish(long t, long c1, long d1, long c2, long d2, long l) {
long s1_only = (t / c2) - (t / l);
long s2_only = (t / c1) - (t / l);
long s_shared = t - (t / c1) - (t / c2) + (t / l);
if (d1 > s1_only) d1 -= s1_only; else d1 = 0;
if (d2 > s2_only) d2 -= s2_only; else d2 = 0;
return (d1 + d2) <= s_shared;
}
long minDeliveryTime(int charge1, int delivery1, int charge2, int delivery2) {
long c1 = charge1, d1 = delivery1, c2 = charge2, d2 = delivery2;
long g = my_gcd(c1, c2);
long l = my_lcm(c1, c2, g);
long low = 1, high = 4000000007LL, ans = high;
while (low <= high) {
long mid = low + (high - low) / 2;
if (can_finish(mid, c1, d1, c2, d2, l)) {
ans = mid;
high = mid - 1;
} else {
low = mid + 1;
}
}
return ans;
}
int main() {
int a, b, c, d;
cin >> a >> b >> c >> d;
cout << minDeliveryTime(a, b, c, d) << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8bnVtZXJpYz4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmxvbmcgbXlfZ2NkKGxvbmcgYSwgbG9uZyBiKSB7CiAgICB3aGlsZSAoYikgewogICAgICAgIGEgJT0gYjsKICAgICAgICBzd2FwKGEsIGIpOwogICAgfQogICAgcmV0dXJuIGE7Cn0KCmxvbmcgbXlfbGNtKGxvbmcgYSwgbG9uZyBiLCBsb25nIGcpIHsKICAgIGlmIChnID09IDApIHJldHVybiAwOwogICAgcmV0dXJuIChhIC8gZykgKiBiOwp9Cgpib29sIGNhbl9maW5pc2gobG9uZyB0LCBsb25nIGMxLCBsb25nIGQxLCBsb25nIGMyLCBsb25nIGQyLCBsb25nIGwpIHsKICAgIGxvbmcgczFfb25seSA9ICh0IC8gYzIpIC0gKHQgLyBsKTsKICAgIGxvbmcgczJfb25seSA9ICh0IC8gYzEpIC0gKHQgLyBsKTsKICAgIGxvbmcgc19zaGFyZWQgPSB0IC0gKHQgLyBjMSkgLSAodCAvIGMyKSArICh0IC8gbCk7CiAgICBpZiAoZDEgPiBzMV9vbmx5KSBkMSAtPSBzMV9vbmx5OyBlbHNlIGQxID0gMDsKICAgIGlmIChkMiA+IHMyX29ubHkpIGQyIC09IHMyX29ubHk7IGVsc2UgZDIgPSAwOwogICAgcmV0dXJuIChkMSArIGQyKSA8PSBzX3NoYXJlZDsKfQoKbG9uZyBtaW5EZWxpdmVyeVRpbWUoaW50IGNoYXJnZTEsIGludCBkZWxpdmVyeTEsIGludCBjaGFyZ2UyLCBpbnQgZGVsaXZlcnkyKSB7CiAgICBsb25nIGMxID0gY2hhcmdlMSwgZDEgPSBkZWxpdmVyeTEsIGMyID0gY2hhcmdlMiwgZDIgPSBkZWxpdmVyeTI7CiAgICBsb25nIGcgPSBteV9nY2QoYzEsIGMyKTsKICAgIGxvbmcgbCA9IG15X2xjbShjMSwgYzIsIGcpOwogICAgbG9uZyBsb3cgPSAxLCBoaWdoID0gNDAwMDAwMDAwN0xMLCBhbnMgPSBoaWdoOwogICAgd2hpbGUgKGxvdyA8PSBoaWdoKSB7CiAgICAgICAgbG9uZyBtaWQgPSBsb3cgKyAoaGlnaCAtIGxvdykgLyAyOwogICAgICAgIGlmIChjYW5fZmluaXNoKG1pZCwgYzEsIGQxLCBjMiwgZDIsIGwpKSB7CiAgICAgICAgICAgIGFucyA9IG1pZDsKICAgICAgICAgICAgaGlnaCA9IG1pZCAtIDE7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgbG93ID0gbWlkICsgMTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gYW5zOwp9CgppbnQgbWFpbigpIHsKICAgIGludCBhLCBiLCBjLCBkOwogICAgY2luID4+IGEgPj4gYiA+PiBjID4+IGQ7CiAgICBjb3V0IDw8IG1pbkRlbGl2ZXJ5VGltZShhLCBiLCBjLCBkKSA8PCBlbmRsOwogICAgcmV0dXJuIDA7Cn0K