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.util.Scanner;


public class R320Div2C {

	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		int a=in.nextInt();
		int b=in.nextInt();
		in.close();
		if(a==b){
			System.out.println(a);
			return;
		}
		
		int lo=1;
		int hi=1000000000;
		while(lo<hi){
			int mid=(lo+hi)/2+1;
			double c=(a-b)*0.5/mid;
			if(c>=b){
				lo=mid;
			}else{
				hi=mid-1;
			}
		}
		double min=Double.MAX_VALUE;
		if((a-b)*0.5/lo>=b){
			min=(a-b)*0.5/lo;
		}
		
		
		lo=1;
		hi=1000000000;
		while(lo<hi){
			int mid=(lo+hi)/2+1;
			double c=(a+b)*0.5/mid;
			if(c>=b){
				lo=mid;
			}else{
				hi=mid-1;
			}
		}
		if((a+b)*0.5/lo>=b){
			min=Math.min(min,(a+b)*0.5/lo);
		}
		if(min==Double.MAX_VALUE)
			System.out.println(-1);
		else
			System.out.println(min);
	}

}