There is a polyline going through points (0, 0) – (*x*, *x*) – (2*x*, 0) – (3*x*, *x*) – (4*x*, 0) – ... - (2*kx*, 0) – (2*kx* + *x*, *x*) – .... 

We know that the polyline passes through the point (*a*, *b*). Find minimum positive value *x* such that it is true or determine that there is no such *x*.
Only one line containing two positive integers *a* and *b* (1 ≤ *a*, *b* ≤ 10<sup class="upper-index">9</sup>).
import sys
input = lambda: sys.stdin.readline().rstrip()
from collections import deque,defaultdict,Counter
from itertools import permutations,combinations
from bisect import *
from heapq import *
from math import ceil,gcd,lcm,floor,comb
alph = 'abcdefghijklmnopqrstuvwxyz'
#pow(x,mod-2,mod)

def find(num):
    k = A//num*num
    p = ((A//num)%2)*num
    if abs(A-k)==abs(B-p):
        return True
    return False

A,B = map(int,input().split())
ans = float('inf')
for i in range(1,10**6+1):
    k = (A+B)/i
    if find(k):ans = min(ans,k)
if ans==float('inf'):
    print(-1)
else:
    print(ans)
