#define _CRT_SECURE_NO_WARNINGS #include "bits/stdc++.h" using namespace std; #define rep(i, n) for(int i=0; i<(n); ++i) #define FOR(i, m, n) for(int i=(m); i<(n); ++i) #define sz(x) ((int)(x).size()) #define all(x) (x).begin(),(x).end() #define mp make_pair #define pb push_back #define Cout(x) cout << (x) << endl #define dump(x) cerr << #x << " = " << (x) << endl; typedef long long LL; typedef vector VI; typedef vector VL; typedef vector VS; typedef vector> VVI; typedef pair PII; const int inf = (int)1e9; const long long mod = (long long)1e9 + 7; const double pi = acos(-1.0); //約数列挙 vector DivAll(long long n) { vector ret; long long i = 1; for (; i * i < n; ++i) if (n % i == 0)ret.push_back(i); bool flag = i * i == n; if (flag)ret.push_back(i); for (i = (int)ret.size() - 1 - flag; i >= 0; --i) ret.push_back(n / ret[i]); return ret; } bool re(int a, int b, int c) { return (a != b && b != c && a != c) && ((a + b) % c == 0) && ((a + c) % b == 0) && ((b + c) % a == 0); } int main() { LL a, b; cin >> a >> b; VL div = DivAll(a + b); int ans = -1; for (auto n : div) { if (re(a, b, n)) { ans = n; break; } } Cout(ans); }