import java.io.File;
import java.io.PrintWriter;
import java.util.Scanner;

public class bonus_gk {
    static Scanner in;
    static PrintWriter out;

    void run() {
        int seats = in.nextInt();
        int c2 = in.nextInt();
        int c1 = in.nextInt();

        if (seats >= c1 + c2 + 1) {
            out.println(1);
            out.println(1);
        } else {
            out.println(prob(seats, c1, c2 + 1, 2));
            out.println(prob(seats, c1 + 1, c2, 1));
        }
    }

    private double prob(int seats, int t1, int t2, int type) {
        double p = 0;
        double[][] ps = new double[seats + 1][seats + 1];
        ps[0][0] = 1;
        for (int i = 0; i <= Math.min(seats - 1, t1); i++) {
            for (int j = 0; j <= Math.min(seats - 1 - i, t2); j++) {
                int c1 = t1 - i;
                int c2 = t2 - j;
                double p1 = c1 / (c1 + 2d * c2);
                double p2 = 1 - p1;
                if (type == 1 && c1 != 0) {
                    p += ps[i][j] * p1 / c1;
                    p1 *= (c1 - 1d) / c1;
                }
                else if (type == 2 && c2 != 0) {
                    p += ps[i][j] * p2 / c2;
                    p2 *= (c2 - 1d) / c2;
                }
                ps[i + 1][j] += ps[i][j] * p1;
                ps[i][j + 1] += ps[i][j] * p2;
            }
        }
        return p;
    }

    public static void main(String[] args) throws Exception {
        in = new Scanner(new File("bonus.in"));
        out = new PrintWriter("bonus.out");

        new bonus_gk().run();

        in.close();
        out.close();
    }
}
