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:
/*
     * Code Author: Akshay Miterani
     * DA-IICT
     */
    import java.io.*;
import java.util.*;
     
    public class Contest {
     
    	static final int mod=(int)1e9+7;
    	static int n=0;
    	//static long a[]=new long[n];
    	//static boolean vis[]=new boolean[n];
    	//static ArrayList<Integer> a=new ArrayList<Integer>();
    	//static Pair p[]=new Pair[n];
    	public static void main(String args[]){
    		InputReader in = new InputReader(System.in);
    		OutputStream outputStream = System.out;
    		PrintWriter out = new PrintWriter(outputStream);
    		//----------My Code Starts Here----------
    		double x=in.nextInt();
    		double y=in.nextInt();
    		double ans=Integer.MIN_VALUE;
    		for(int i=(int)((x-y)/(2*y));i>0;i++){
    			if(((x-y)/(2*i))>=y){
    				ans=((x-y)/(2*i));
    			}
    			else
    				break;
    		}
    		for(int i=(int)((x+y)/(2*y));i>0;i++){
    			if(((x+y)/(2*i))>=y){
    				ans=((x+y)/(2*i));
    			}
    			else
    				break;
    		}
    		if(ans>0)
    			System.out.printf("%.10f\n",ans);
    		else
    			System.out.println("-1");
    		out.close();		
    		//---------------The End------------------
    	}
    	static class Pair implements Comparable<Pair>{
    		int L,R,i;
    		Pair(){}
    		Pair(int ii,int cc){
    			L=ii;R=cc;
    		}
			@Override
			public int compareTo(Pair o) {
				return -Integer.compare(R,o.R);
			}
			
    	}
    	
    	static class InputReader {
    	    public BufferedReader reader;
    	    public StringTokenizer tokenizer;
     
    	    public InputReader(InputStream inputstream) {
    	      reader = new BufferedReader(new InputStreamReader(inputstream));
    	      tokenizer = null;
    	    }
    	    
    	    public String nextLine(){
    	    	String fullLine=null;
    	    	while (tokenizer == null || !tokenizer.hasMoreTokens()) {
    	            try {
    	              fullLine=reader.readLine();
    	            } catch (IOException e) {
    	              throw new RuntimeException(e);
    	            }
    	            return fullLine;
    	          }
    	          return fullLine;
    	    }
    		public String next() {
    	      while (tokenizer == null || !tokenizer.hasMoreTokens()) {
    	        try {
    	          tokenizer = new StringTokenizer(reader.readLine());
    	        } catch (IOException e) {
    	          throw new RuntimeException(e);
    	        }
    	      }
    	      return tokenizer.nextToken();
    	    }
    		public long nextLong() {
    		      return Long.parseLong(next());
    		    }
    	    public int nextInt() {
    	      return Integer.parseInt(next());
    	    }
    	  }
    }