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

public class Main
{
  static BufferedReader reader;
  static StringTokenizer tokenizer;
  static PrintWriter writer;
  
  static int nextInt() throws IOException
  {
    return Integer.parseInt(nextToken());
  }
  
  static long nextLong() throws IOException
  {
    return Long.parseLong(nextToken());
  }
  
  static double nextDouble() throws IOException
  {
    return Double.parseDouble(nextToken());
  }
  
  static boolean eof = false;
  
  static String nextToken() throws IOException
  {
    while (tokenizer == null || !tokenizer.hasMoreTokens())
    {
      tokenizer = new StringTokenizer(reader.readLine());
    }
    return tokenizer.nextToken();
  }
  
  public static void main(String[] args) throws IOException
  {
    tokenizer = null;
    reader = new BufferedReader(new InputStreamReader(System.in));
    writer = new PrintWriter(System.out);
    banana();
    reader.close();
    writer.close();
  }
  
  static int test(int a[], int b[])
  {
    int sum = 0;
    for (int i = 0; i < a.length; ++i)
      sum += a[i] * b[i];
    
    return sum;
  }
  
  static void banana() throws IOException
  {
    double a = nextDouble();
    double b = nextDouble();
    double c = nextDouble();
    double d = nextDouble();
    
    double res = a / b;
    double aa = 1 - a / b;
    double cura = aa;
    double bb = 1 - c / d;
    double curb = bb;
    for (int i = 0; i < 100000; ++i, cura *= aa, curb *= bb)
    {
      res += cura * curb * a / b;
    }
    System.out.println(res);
  }
  
  public void taskA() throws IOException
  {
    int n = nextInt();
    String s1 = "miao.";
    String s2 = "lala.";
    for (int i = 0; i < n; ++i)
    {
      String s = reader.readLine();
      if (s.indexOf(s1) == 0 && s.indexOf(s2) != s.length() - 5)
        System.out.println("Rainbow's");
      else if (s.indexOf(s1) != 0 && s.indexOf(s2) == s.length() - 5)
        System.out.println("Freda's");
      else
        System.out.println("OMG>.< I don't know!");
    }
  }
}