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

public class B {

    private static class Solution implements Runnable {

        private static final long modulo = 1000000007;


        private void solve() {

            double a = in.nextInt(), b = in.nextInt(), c = in.nextInt(), d = in.nextInt();

            out.printf("%.12f", a / b / (a / b + (1 - a / b) * c / d));


        }

        private int gcd(int a, int b) {
            if (b == 0)
                return a;
            else
                return gcd(b, a % b);
        }

        private long inverse(long a) {
            long result = 1;
            int n = (int) modulo - 2;
            while (n != 0) {
                if ((n & 1) == 1)
                    result = (result * a) % modulo;
                a = (a * a) % modulo;
                n >>= 1;
            }
            return result;
        }

        private long pow(long a, long n) {
            if (n == 0) return 1;
            if (n % 2 == 0) {
                long ans = pow(a, n / 2);
                return ans * ans;
            } else {
                return a * pow(a, n - 1);
            }
        }

        private void closeStreams() {
            in.close();
            out.close();
        }

        @Override
        public void run() {
            solve();
            closeStreams();
        }

        private final FastScanner in = new FastScanner();
        private final PrintWriter out = new PrintWriter(new BufferedOutputStream(System.out));
    }


    public static void main(String[] args) {
        Thread thread = new Thread(null, new Solution(), "solution", 1 << 27);
        thread.setPriority(Thread.MAX_PRIORITY);
        thread.start();
    }


    public static class FastScanner {

        private BufferedReader br;
        private StringTokenizer st;

        public FastScanner() {
            br = new BufferedReader(new InputStreamReader(System.in));
        }

        String next() {
            while (st == null || !st.hasMoreElements()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }

        int nextInt() {
            return Integer.parseInt(next());
        }

        long nextLong() {
            return Long.parseLong(next());
        }

        double nextDouble() {
            return Double.parseDouble(next());
        }

        String nextLine() {
            String str = "";
            try {
                str = br.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return str;
        }

        void close() {
            try {
                br.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }
}