#include #include #include #include #include #include #include #include #include #include #include #include #pragma warning(disable:4996) typedef long long ll; #define MIN(a, b) ((a)>(b)? (b): (a)) #define MAX(a, b) ((a)<(b)? (b): (a)) #define LINF 9223300000000000000 #define INF 2140000000 #define MOD 1000000007 using namespace std; ll gcd(ll a, ll b) { if(b == 0) return a; return gcd(b,a%b); } int main(int argc, char* argv[]) { ll a,b; scanf("%lld%lld", &a, &b); if(a==b) { printf("%ld\n", a); } else { ll a0=MIN(a,b), b0=MAX(a,b); ll d=gcd(a0,b0); ll a1=a0/d, b1=b0/d; long k; for(k=1; k<=2; k++) { ll c1=k*a1*b1-a1-b1; if(c1>0 && (a1+b1+c1)%a1==0 && (a1+b1+c1)%b1==0 && (a1+b1+c1)%c1==0) { printf("%lld\n", c1*d); return 0; } } printf("-1\n"); } return 0; }