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 PYTHON):

Solution:
#!/usr/bin/env python
#
# http://codeforces.com/problemset/problem/579/C

from math import floor
from math import ceil

def find(a, b):
        if a < b:
                return -1
        if a == b:
                return a

        x1 = a
        left = 1
        right = int(ceil(a / b / 2.0))
        while left <= right:
                mid = floor((left + right) / 2)
                t = (a - b) / mid / 2.0
                if t >= b:
                        left = mid + 1
                        if t < x1:
                                x1 = t
                else:
                        right = mid - 1

        x2 = (a + b) / 2.0
        left = 1
        right = int(ceil(a / b / 2.0))
        while left <= right:
                mid = floor((left + right) / 2)
                t = (a + b) / (mid + 1) / 2.0
                if t >= b:
                        left = mid + 1
                        if t < x2:
                                x2 = t
                else:
                        right = mid - 1
        return x1 if x1 < x2 else x2

while True:
        try:
                a, b = raw_input().split()

                print(find(int(a), int(b)))
        except EOFError:
                break