#include using namespace std; std::ostream& operator<<(std::ostream& dest, __int128_t value) { std::ostream::sentry s(dest); if (s) { __uint128_t tmp = value < 0 ? -value : value; char buffer[128]; char* d = std::end(buffer); do { --d; *d = "0123456789"[tmp % 10]; tmp /= 10; } while (tmp != 0); if (value < 0) { --d; *d = '-'; } int len = std::end(buffer) - d; if (dest.rdbuf()->sputn(d, len) != len) { dest.setstate(std::ios_base::badbit); } } return dest; } __int128 gcd(__int128 a, __int128 b) { if (b == 0) { return a; } return gcd(b, a % b); } int main(void) { cin.tie(0); ios::sync_with_stdio(false); long long int A, B; cin >> A >> B; __int128 a = A; __int128 b = B; __int128 X = A + B; __int128 Y = a * b; cout << gcd(X, Y) << '\n'; return 0; }