import java.io.*;
import java.util.*;
 
public class bonus_nn_pe {
 
    static void solve() throws IOException {
        int n = nextInt();
        int a = nextInt();
        int b = nextInt();
        {
            double[][] dp = new double[n + 1][n + 1];
            dp[0][0] = 1.;
            int na = a + 1;
            int nb = b;
            for (int i = 0; i < n; i++) {
                for (int j = 0; j + i < n; j++) {
                    double val = dp[i][j];
                    if (val == 0)
                        continue;
                    int countA = na - i;
                    int countB = nb - j;
                    {
                        double p = 1. * (countA * 2 - 2)
                                / (countA * 2 + countB);
                        dp[i + 1][j] += val * p;
                    }
                    {
                        double p = 1. * countB / (countA * 2 + countB);
                        dp[i][j + 1] += val * p;
                    }
                }
            }
            double cur = 0;
            for (int i = 0; i <= n; i++) {
                cur += dp[i][n - i];
            }
            out.println(1 - cur);
        }
        {
            double[][] dp = new double[n + 1][n + 1];
            dp[0][0] = 1.;
            int na = a;
            int nb = b + 1;
            for (int i = 0; i < n; i++) {
                for (int j = 0; j + i < n; j++) {
                    double val = dp[i][j];
                    if (val == 0)
                        continue;
                    int countA = na - i;
                    int countB = nb - j;
                    {
                        double p = 1. * (countA * 2) / (countA * 2 + countB);
                        dp[i + 1][j] += val * p;
                    }
                    {
                        double p = 1. * (countB - 1) / (countA * 2 + countB);
                        dp[i][j + 1] += val * p;
                    }
                }
            }
            double cur = 0;
            for (int i = 0; i <= n; i++) {
                cur += dp[i][n - i];
            }
            out.println(1 - cur);
        }
    }
 
    public static void main(String[] args) throws Exception {
        File file = new File("bonus.in");
        InputStream input = System.in;
        PrintStream output = System.out;
        if (file.exists() && file.canRead()) {
            input = new FileInputStream(file);
            output = new PrintStream("bonus.out");
        }
        br = new BufferedReader(new InputStreamReader(input));
        out = new PrintWriter(output);
        solve();
        out.close();
    }
 
    static BufferedReader br;
    static StringTokenizer st;
    static PrintWriter out;
 
    static String nextToken() throws IOException {
        while (st == null || !st.hasMoreTokens()) {
            String line = br.readLine();
            if (line == null) {
                return null;
            }
            st = new StringTokenizer(line);
        }
        return st.nextToken();
    }
 
    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());
    }
}