Problem: There is a polyline going through points (0, 0) – (x, x) – (2x, 0) – (3x, x) – (4x, 0) – ... - (2kx, 0) – (2kx + 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.

Input

Only one line containing two positive integers a and b (1 ≤ a, b ≤ 109).

Output

Output the only line containing the answer. Your answer will be considered correct if its relative or absolute error doesn't exceed 10 - 9. If there is no such x then output  - 1 as the answer.

Examples

Input

3 1


Output

1.000000000000


Input

1 3


Output

-1


Input

4 1


Output

1.250000000000

Note

You can see following graphs for sample 1 and sample 3. 

<image> <image>

Solution (in JAVA):

Solution:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class c {
	public static void main(String args[]) throws IOException{
		//long a,b,n,m;
		double x,y,min1=0,min2=0,t,a,b;
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String s[] = br.readLine().split(" ");
		a=Long.parseLong(s[0]);
		b=Long.parseLong(s[1]);
		x=Math.floor((a+b)/(2*b));
		y=Math.floor((a-b)/(2*b));
		//min1=(a+b-2)/(2*x);
		//min2=(a-b)/(2*y);
		if(x<1 && y<0)
			System.out.println(-1);
		else {
			if(x==1) {
				if(a>=b)
					min1=(a+b)/2;
			}

			else if(x>0)
				min1=(a+b)/(2*x);
			if(y==0) {
				if(a==b)
					min2=a;
			}
			else if(y>0)
				min2=(a-b)/(2*y);
			if( min1>0 && min2>0 )
				System.out.println(Math.min(min1,min2));
			else if(min1>0 && min2==0)
				System.out.println(min1);
			else if(min1==0 && min2>0)
				System.out.println(min2);
			else
				System.out.println(-1);
		}
	}
}