Problem:
Score : 100 points

Problem Statement

You are given positive integers X and Y.
If there exists a positive integer not greater than 10^{18} that is a multiple of X but not a multiple of Y, choose one such integer and print it.
If it does not exist, print -1.

Constraints

1 ≤ X,Y ≤ 10^9

X and Y are integers.

Input

Input is given from Standard Input in the following format:

X Y

Output

Print a positive integer not greater than 10^{18} that is a multiple of X but not a multiple of Y, or print -1 if it does not exist.

Sample Input 1

8 6

Sample Output 1

16

For example, 16 is a multiple of 8 but not a multiple of 6.

Sample Input 2

3 3

Sample Output 2

-1

A multiple of 3 is a multiple of 3.

Solution in C++14 (GCC 5.4.1) (judge verdict: Wrong Answer)

#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <cmath>
#include <string>

using namespace std;

#define rep(i,n) for(int i=0;i<(int)(n);i++)
#define rep2(i,n) for(int i=1;i<=(int)(n);i++)
#define REP(i,m,n) for(int i=m;i<(int)(n);i++)
#define REP2(i,m,n) for(int i=m+1;i<=(int)(n);i++)
#define INF 2000000000
#define LINF 9000000000000000000


typedef long long int ll;

int gcd(int m, int n) {
    if ((0 == m) || (0 == n))
        return 0;

    while (m != n) {
        if (m > n) m = m - n;
        else n = n - m;
    }
    return m;
}

int main() {
    int x, y;
    cin >> x >> y;
    if (x < y) {
        cout << x << endl;
    } else if (x = y) {
        cout << -1 << endl;
    } else {
        if (gcd(x, y) == y) {
            cout << -1 <<endl;
        }else{
            cout << x;
        }
    }
    return 0;
}