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;
import java.util.StringTokenizer;

/**
 * Created by David Zeng on 9/19/2015.
 */
public class Problem578A {
    public static void main(String[] args) throws IOException {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(in.readLine());
        int x = Integer.parseInt(st.nextToken());
        int y = Integer.parseInt(st.nextToken());
        double add = x + y;
        double sub = x - y;
        if (sub < 0) {
            System.out.println(-1);
        } else if (sub == 0) {
            System.out.println(y);
        } else {
            double minL = y;
            int addMult = (int) (add / minL);
            int subMult = (int) (sub / minL);
            addMult -= addMult % 2;
            subMult -= subMult % 2;
            double answer = Double.MAX_VALUE;
            if (addMult != 0) {
                double addL = add / addMult;
                answer = Math.min(answer, addL);
            }
            if (subMult != 0) {
                double subL = sub / subMult;
                answer = Math.min(answer, subL);
            }
            System.out.println(answer);
        }
    }
}