Problem: Problem

You brought a flat, holeless donut with a $ W $ horizontal $ H $ vertical $ H $ rectangle for ACPC.
Place this donut on the $ 2 $ dimension plane coordinate $ (0,0) $ with the center of the donut so that the side of length H and the $ y $ axis are parallel.


On the ACPC $ 1 $ day you ate a donut that was in the range of $ w $ vertical $ h $ centered on the coordinates ($ x $, $ y $).
If you want to eat the same amount on the $ 2 $ and $ 3 $ days, divide the donut by a straight line passing through the coordinates $ (0,0) $, and the sum of the donut areas in the area on one side of the straight line is on the other side I want it to be equal to the sum of the donut areas in the area of.


Find one slope of such a straight line.

Constraints

The input satisfies the following conditions.

* $ 1 \ lt h \ lt H \ lt 10 ^ 6 $
* $ 1 \ lt w \ lt W \ lt 10 ^ 6 $
* $ 1 \ le y \ le (h / 2 + H-1)-H / 2 $
* $ 1 \ le x \ le (w / 2 + W-1)-W / 2 $
* $ W $, $ H $, $ w $, $ h $ are even numbers

Input

The input is given in the following format.


$ W $ $ H $ $ w $ $ h $ $ x $ $ y $


Output

Output the slope of a straight line in one line. If the absolute error or relative error is $ 10 ^ {-6} $ or less, the answer is correct.

Examples

Input

6000 5000 20 10 400 300


Output

0.75


Input

10 10 8 8 8 8


Output

1

Solution (in CPP):

Solution:
#include <bits/stdc++.h>
#define REP(i, a, n) for (ll i = ((ll) a); i < ((ll) n); i++)
using namespace std;
typedef long long ll;

const double INF = 1e20, EPS = 1e-8;

double W, H, w, h, x, y;
double lx, hx, ly, hy;

// x = vx (y1 <= y <= y2)の部分とy = axが交わるか
bool intersect_x(double a, double vx, double y1, double y2, double &px, double &py) {
  double vy = a * vx;
  if (!(y1 - EPS < vy && vy < y2 + EPS)) return false;
  px = vx;
  py = vy;
  return true;
}

// y = vy (x1 <= x <= x2)の部分とy = axが交わるか
bool intersect_y(double a, double vy, double x1, double x2, double &px, double &py) {
  if (abs(a) < EPS) return false;
  double vx = vy / a;
  if (!(EPS + x1 < vx && vx < x2 + EPS)) return false;
  px = vx;
  py = vy;
  return true;
}

bool ok(double a) {
  double x[4], y[4], b[4];
  b[0] = intersect_x(a, lx, ly, hy, x[0], y[0]);
  b[1] = intersect_y(a, hy, lx, hx, x[1], y[1]);
  b[2] = intersect_x(a, hx, ly, hy, x[2], y[2]);
  b[3] = intersect_y(a, ly, lx, hx, x[3], y[3]);

  ll cnt = 0;
  REP(i, 0, 4) if (b[i]) cnt++;

  double s;
  if (cnt == 3 || cnt == 4) {
    return true;
  } else if (b[0] && b[1]) {
    s = (hy - y[0]) * (x[1] - lx) / 2;
  } else if (b[1] && b[2]) {
    s = (hx - x[1]) * (hy - y[2]) / 2;
  } else if (b[2] && b[3]) {
    s = (hx - lx) * (hy - ly) - (y[2] - ly) * (hx - x[3]) / 2;
  } else if (b[3] && b[0]) {
    s = (hx - lx) * (hy - ly) - (x[3] - lx) * (y[0] - ly) / 2;
  } else if (b[0] && b[2]) {
    s = ((hy - y[0]) + (hy - y[2])) * (hx - lx) / 2;
  } else if (b[1] && b[3]) {
    s = ((x[1] - lx) + (x[3] - lx)) * (hy - ly) / 2;
  } else {
    return ly > a * lx;
  }

  return s > (hx - lx) * (hy - ly) / 2 - EPS;
}

int main(void) {
  cin >> W >> H >> w >> h >> x >> y;

  lx = max(-W / 2, x - w / 2);
  hx = min(+W / 2, x + w / 2);
  ly = max(-H / 2, y - h / 2);
  hy = min(+H / 2, y + h / 2);

  double l = -INF, h = INF;
  REP(i, 0, 250) {
    double m = (l + h) / 2;
    if (ok(m)) l = m;
    else h = m;
  }
  printf("%.15lf\n", h);
}