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.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;


public class A
{
        String line;
        StringTokenizer inputParser;
        BufferedReader is;
        FileInputStream fstream;
        DataInputStream in;
        String FInput="";
        
        void openInput(String file)
        {
            if(file==null)is = new BufferedReader(new InputStreamReader(System.in));//stdin
            else
            {
                    try{
            
                            
                    fstream = new FileInputStream(file);
                    in = new DataInputStream(fstream);
                    is = new BufferedReader(new InputStreamReader(in));
                    }catch(Exception e)
                    {
                            System.err.println(e);
                    }
            }
        }
        
        void readNextLine()
    	{
    		try {
    			line = is.readLine();
    			inputParser = new StringTokenizer(line, " ,\t");
    			//System.err.println("Input: " + line);
    		} catch (IOException e) {
    			System.err.println("Unexpected IO ERROR: " + e);
    		}	
    		catch (NullPointerException e)
    		{
    			line=null;
    			
    		}
    		
    	}
        
        long NextLong()
        {
                String n = inputParser.nextToken();
                
                long val = Long.parseLong(n);
                
                 return val;
        }
        
        int NextInt()
        {
                String n = inputParser.nextToken();
                int val = Integer.parseInt(n);
                
                //System.out.println("I read this number: " + val);
                return val;
        }
        
        double NextDouble()
        {
                String n = inputParser.nextToken();
                double val = Double.parseDouble(n);
                
                //System.out.println("I read this number: " + val);
                return val;
        }
        
        String NextString()
        {
                String n = inputParser.nextToken();
                return n;
        }
        
        void closeInput()
        {
                try {
                        is.close();
                } catch (IOException e) {
                        System.err.println("Unexpected IO ERROR: " + e);
                }
                        
        }
        
        
        public static void main(String [] argv)
        {
                //String filePath="circles.in";
                String filePath=null;
                if(argv.length>0)filePath=argv[0];
                new A(filePath);
                
        }
        
        public A(String inputFile)
        {
        	openInput(inputFile);
    		//readNextLine();
    		int T=1;//NextInt();
    		StringBuilder sb = new StringBuilder();
    		for(int t=1; t<=T; t++)
    		{
    			readNextLine();
    			int a=NextInt();
    			int b=NextInt();
    			
    			double res=-1;
    			if(a>=b)
    			{
    				int R=a+b;
    				
    				int D = R/b;
    				if(R%(2*b)==0)res=b;
    				else
    				{
    					res = R;
    					int L=1, W=1000000000;
    					int num=(L+W)/2;
    					while(L+1<W)
    					{
    						double x=R/(double)num;
    						if(x>=b)
    						{
    							L=num;
    						}
    						else
    						{
    							W=num;
    						}
    						num=(L+W)/2;
    						
    					}
    					
    					
    					num-=3;
    					if(num<1)num=1;
    					while(R/(num+1)>=b)
    					{
    						num++;
    					}
    					if(R%(2*b)>=b)
    						num--;
    					
    					res = R/(double)num;
    				}
    				sb.append(res);
    			}
    			else sb.append(-1);
    		}
    		System.out.print(sb);
    		
    		closeInput();		
      
        }

		
}