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

public class polyline {
  private static InputReader in;
  private static PrintWriter out;

  public static void main(String[] args) throws IOException {
    in = new InputReader(System.in);
    out = new PrintWriter(System.out, true);
    long a = in.nextInt(), b = in.nextInt();
    if (a < b) {
      out.println(-1);
    } else if (a == b) {
      out.printf("%.10f\n", (double)a);
    } else {
      double min = 1l << 60;
      {
        long lo = 0, hi = a;
        while (lo < hi) {
          long mid = (lo + hi + 1) / 2;
          if ((a - b) >= mid * b) lo = mid;
          else hi = mid-1;
        }
        if (lo % 2 == 1) lo--;
        if (lo != 0) min = (a - b) / (double)lo;
      }
      {
        long lo = 0, hi = a;
        while (lo < hi) {
          long mid = (lo + hi + 1) / 2;
          if ((a + b) >= mid * b) lo = mid;
          else hi = mid-1;
        }
        if (lo % 2 == 1) lo--;
        if (lo > 0) min = Math.min(min, (a + b) / (double)lo);
      }
      
      out.printf("%.10f\n", min);
    }
    
    out.close();
    System.exit(0);
  }

  static class InputReader {
    public BufferedReader reader;
    public StringTokenizer tokenizer;

    public InputReader(InputStream stream) {
      reader = new BufferedReader(new InputStreamReader(stream), 32768);
      tokenizer = null;
    }

    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 int nextInt() {
      return Integer.parseInt(next());
    }
  }


}