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# (Mono 4.6.2.0) (judge verdict: Wrong Answer)

using System.Linq;
using System.Collections.Generic;
using System;

public class Hello
{
    public static void Main()
    {
        var dx = new Dictionary<long, long>();
        var dy = new Dictionary<long, long>();
        string[] line = Console.ReadLine().Trim().Split(' ');
        var x = long.Parse(line[0]);
        var y = long.Parse(line[1]);
        if (x == y) { Console.WriteLine(-1); goto end; }
        foreach (var w in PrimeFactors(x))
            if (dx.ContainsKey(w)) dx[w]++;
            else dx[w] = 1;
        foreach (var w in PrimeFactors(y))
            if (dy.ContainsKey(w)) dy[w]++;
            else dy[w] = 1;
        var klist = new List<long>();
        foreach (var a in dy)
        {
            if (!dx.ContainsKey(a.Key)) klist.Add(a.Key);
            else if (a.Value > dx[a.Key]) klist.Add(a.Key);
        }
        var ret = 0L;
        if (klist.Count() == 0) Console.WriteLine(-1);
        else
        {
            foreach (var a in dx)
                if (!klist.Contains(a.Key) | (klist.Contains(a.Key) && dy[a.Key] - a.Value >= 2))
                {
                    ret = a.Key * x;
                    Console.WriteLine(ret);
                    goto end;
                }
        }
        end:;
    }
    public static IEnumerable<long> PrimeFactors(long n)
    {
        long i = 2;
        long tmp = n;
        while (i * i <= n)
        {
            if (tmp % i == 0) { tmp /= i; yield return i; }
            else i++;
        }
        if (tmp != 1) yield return tmp;
    }

}