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>).
vals=list(map(int,input().split()))
x=vals[0]
y=vals[1]

if x-y>=0:
    k=(x-y)//(2*y)
    ans=[]
    if x-y==0:
        ans.append(x)
    else:
        a=(x-y)/(2*k)
        if 2*k*a<=x<=(2*k+1)*a and 0<=y<=a:
            ans.append(a)
    
    k=((x+y)//(2*y))-1 
    # print(k)
    a=(x+y)/(2*(k+1))
    
    if (2*k+1)*a<=x<=2*(k+1)*a and 0<=y<=a:
        ans.append(a)
    else: None
    
    if len(ans)>0:
        print(min(ans))
    else:
        print("-1");
    
elif x+y>=0:
    ans=[]
    k=(x+3*y-1)//(2*y)-1
    a=(x+y)/(2*(k+1))
    
    if (2*k+1)*a<=x<=2*(k+1)*a and 0<=y<=a:
        ans.append(a)
    else: None
    
    if len(ans)>0:
        print(min(ans))
    else:
        print("-1");   
        
        