Problem: SmallR is an archer. SmallR is taking a match of archer with Zanoes. They try to shoot in the target in turns, and SmallR shoots first. The probability of shooting the target each time is <image> for SmallR while <image> for Zanoes. The one who shoots in the target first should be the winner.

Output the probability that SmallR will win the match.

Input

A single line contains four integers <image>.

Output

Print a single real number, the probability that SmallR will win the match.

The answer will be considered correct if the absolute or relative error doesn't exceed 10 - 6.

Examples

Input

1 2 1 2


Output

0.666666666667

Solution (in JAVA):

Solution:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class B
{
    public static void main(String[] args) throws IOException
    {
        InputB in = new InputB();
        int a = in.nextInt(), b = in.nextInt(), c = in.nextInt(), d = in
                .nextInt();
        double lose2 = (1.0 - (1.0 * c / d));
        double win1 = (1.0 * a) / b;
        double lose1 = 1.0 - win1;
        double ans = win1 + win1 * (lose1 * lose2 / (1.0 - lose1 * lose2));
        System.out.println(ans);
    }
}

class InputB
{
    BufferedReader bf;
    StringTokenizer st;

    public InputB() throws IOException
    {
        bf = new BufferedReader(new InputStreamReader(System.in));
        st = new StringTokenizer(bf.readLine());
    }

    public String next() throws IOException
    {
        while (!st.hasMoreTokens() && bf.ready())
        {
            st = new StringTokenizer(bf.readLine());
        }
        return st.hasMoreTokens() ? st.nextToken() : null;
    }

    public boolean hasNext() throws IOException
    {
        while (!st.hasMoreTokens() && bf.ready())
        {
            st = new StringTokenizer(bf.readLine());
        }
        return st.hasMoreTokens();
    }

    public int nextInt() throws IOException
    {
        while (!st.hasMoreTokens() && bf.ready())
        {
            st = new StringTokenizer(bf.readLine());
        }
        return st.hasMoreTokens() ? new Integer(st.nextToken()) : 0;

    }
}