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
#include "bits/stdc++.h"
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
const int INF = 1e9;
const ll LINF = 1e18;
template<class S,class T> ostream& operator << (ostream& out,const pair<S,T>& o){ out << "(" << o.first << "," << o.second << ")"; return out; }
template<class T> ostream& operator << (ostream& out,const vector<T> V){ for(int i = 0; i < V.size(); i++){ out << V[i]; if(i!=V.size()-1) out << " ";} return out; }
template<class T> ostream& operator << (ostream& out,const vector<vector<T> > Mat){ for(int i = 0; i < Mat.size(); i++) { if(i != 0) out << endl; out << Mat[i];} return out; }
template<class S,class T> ostream& operator << (ostream& out,const map<S,T> mp){ out << "{ "; for(auto it = mp.begin(); it != mp.end(); it++){ out << it->first << ":" << it->second; if(mp.size()-1 != distance(mp.begin(),it)) out << ", "; } out << " }"; return out; }

/*
 <url:https://onlinejudge.u-aizu.ac.jp/services/room.html#ACPC2018Day2/problems/E>
 問題文============================================================
 =================================================================
 解説=============================================================
 ================================================================
 */

double solve(){
    double res = 0;
    double W,H,w,h,x,y; cin >> W >> H >> w >> h >> x >> y;
    if((x+w/2 <= W/2) and (y+h/2 <= H/2)){
        res = y/x;
    }else{
        if(x+w/2 > W/2){
            x = (x-w/2+W/2)/2;
        }
        if(y+h/2 > H/2){
            y = (y-h/2+H/2)/2;
        }
        res = y/x;
    }
    return res;
}
int main(void) {
    cin.tie(0); ios_base::sync_with_stdio(false);
    cout << fixed << setprecision(12) << solve() << endl;
    return 0;
}

