import java.io.*;

/**
 * Solution for NEERC'2013 Problem B: Bonus Cards.
 * This solution checks correctness of the input.
 *
 * @author Roman Elizarov
 */
public class bonus_re {

    private static final int MAX_N = 3000;
    private static final int MAX_AB = 1_000_000_000;

    public static void main(String[] args) throws Exception {
        new bonus_re().go();
    }

    void go() throws Exception {
        long time = System.currentTimeMillis();
        read();
        solve();
        write();
        System.out.printf("Done in %d ms%n", System.currentTimeMillis() - time);
    }

    int n;
    int a;
    int b;

    void read() throws Exception {
        Scanner in = new Scanner(new File("bonus.in"));
        n = in.nextInt();
        a = in.nextInt();
        b = in.nextInt();
        in.nextLine();
        assert n >= 1 && n <= MAX_N;
        assert a >= 0 && a <= MAX_AB;
        assert b >= 0 && b <= MAX_AB;
        in.close();
    }

    double[][] p;
    double pa;
    double pb;

    void solve() {
        p = new double[n + 1][n + 1];
        pa = compute(2);
        pb = compute(1);
    }

    private double compute(double slots) {
        for (int i = 1; i <= n; i++) {
            int givenAB = n - i;
            if (givenAB > a + b)
                continue;
            int minGivenA = Math.max(0, givenAB - b);
            int maxGivenA = Math.min(a, givenAB);
            for (int givenA = minGivenA; givenA <= maxGivenA; givenA++) {
                int remA = a - givenA;
                int remB = b - (givenAB - givenA);
                p[i][givenA] = (slots + 2 * remA * p[i - 1][givenA + 1] + remB * p[i - 1][givenA]) / (slots + 2 * remA + remB);
                assert p[i][givenA] >= 0 && p[i][givenA] <= 1 : String.format("i=%d, givenA=%d, remA=%d, remB=%d, p=%f", i, givenA, remA, remB, p[i][givenA]);
            }
        }
        return p[n][0];
    }

    void write() throws Exception {
        PrintWriter out = new PrintWriter("bonus.out");
        out.println(pa);
        out.println(pb);
        out.close();
    }

//----------------- just for validation ------------------

    /**
     * Strict scanner to verify 100% correspondence between input files and input file format specification.
     * It is a drop-in replacement for {@link java.util.Scanner} that could be added to a solution source
     * (cut-and-paste) without breaking its ability to work with {@link java.util.Scanner}.
     */
    public class Scanner {
        private final BufferedReader in;
        private String line = "";
        private int pos;
        private int lineNo;

        public Scanner(File source) throws FileNotFoundException {
            in = new BufferedReader(new FileReader(source));
            nextLine();
        }

        public void close() {
            assert line == null : "Extra data at the end of file";
            try {
                in.close();
            } catch (IOException e) {
                throw new AssertionError("Failed to close with " + e);
            }
        }

        public void nextLine() {
            assert line != null : "EOF";
            assert pos == line.length() : "Extra characters on line " + lineNo;
            try {
                line = in.readLine();
            } catch (IOException e) {
                throw new AssertionError("Failed to read line with " + e);
            }
            pos = 0;
            lineNo++;
        }

        public String next() {
            assert line != null : "EOF";
            assert line.length() > 0 : "Empty line " + lineNo;
            if (pos == 0)
                assert line.charAt(0) > ' ' : "Line " + lineNo + " starts with whitespace";
            else {
                assert pos < line.length() : "Line " + lineNo + " is over";
                assert line.charAt(pos) == ' ' : "Wrong whitespace on line " + lineNo;
                pos++;
                assert pos < line.length() : "Line " + lineNo + " is over";
                assert line.charAt(pos) > ' ' : "Line " + lineNo + " has double whitespace";
            }
            StringBuilder sb = new StringBuilder();
            while (pos < line.length() && line.charAt(pos) > ' ')
                sb.append(line.charAt(pos++));
            return sb.toString();
        }

        public int nextInt() {
            String s = next();
            assert s.length() == 1 || s.charAt(0) != '0' : "Extra leading zero in number " + s + " on line " + lineNo;
            assert s.charAt(0) != '+' : "Extra leading '+' in number " + s + " on line " + lineNo;
            try {
                return Integer.parseInt(s);
            } catch (NumberFormatException e) {
                throw new AssertionError("Malformed number " + s + " on line " + lineNo);
            }
        }
    }
}
