//
// Written by Fyodor Menshikov 17.02.2009
// 16:12-16:49
//

import java.io.*;
import java.util.*;

public class Main {

   Scanner in;
   PrintWriter out;

   void asserT(boolean e) {
      if (!e) {
         throw new Error();
      }
   }

   double p1(double pMoveFirst, double pMoveSecond, double pWinPrevFirst, double pWinPrevSecond) {
      double pMove = pMoveFirst / (1 - (1 - pMoveFirst) * (1 - pMoveSecond));
      return pMove * (1 - pWinPrevSecond) + (1 - pMove) * pWinPrevFirst;
   }

   double p(int s, double pA, double pB) {
      asserT(s > 0);
      asserT(0.5 <= pA && pA < 1);
      asserT(0.5 <= pB && pB < 1);
      double pMove[] = new double[2];
      pMove[0] = pA;
      pMove[1] = pB;
      double pWin[][] = new double[1 + s][2]; // [to go][first]
      pWin[0][0] = 0;
      pWin[0][1] = 0;
      for (int i = 1; i <= s; i++) {
         for (int first = 0; first <= 1; first++) {
            int second = 1 - first;

            double pWin00 = p1(1 - pMove[first], 1 - pMove[second], pWin[i - 1][first], pWin[i - 1][second]);
            double pWin01 = p1(1 - pMove[first], pMove[second], pWin[i - 1][first], pWin[i - 1][second]);
            double pWin10 = p1(pMove[first], 1 - pMove[second], pWin[i - 1][first], pWin[i - 1][second]);
            double pWin11 = p1(pMove[first], pMove[second], pWin[i - 1][first], pWin[i - 1][second]);

            pWin[i][first] = Math.max(Math.min(pWin00, pWin01), Math.min(pWin10, pWin11));
         }
      }
      return pWin[s][0];
   }

   void solve() {
      in.useLocale(Locale.US);
      int s = in.nextInt();
      double pA = in.nextDouble();
      double pB = in.nextDouble();
      out.printf(Locale.US, "%.10f", p(Math.min(s, 100), pA, pB));
      out.println();
   }

   void run() {
      try {
         in = new Scanner(new InputStreamReader(System.in));
         out = new PrintWriter(System.out);
      } catch (Exception e) {
         throw new Error(e);
      }
      try {
         solve();
      } finally {
         out.close();
      }
   }

   public static void main(String args[]) {
      new Main().run();
   }
}

class Check {

   Scanner in;
   PrintWriter out;

   void print(int s, double pA, double pB) {
      double p = new Main().p(s, pA, pB);
      out.printf(Locale.US, " (%.2f %.2f) => %.10f", pA, pB, p);
   }

   void solve() {
      for (int s = 1; s <= 100; s++) {
         out.printf("%3d", s);
         for (int pA = 5; pA <= 9; pA++) {
            for (int pB = 5; pB <= 9; pB++) {
               print(s, pA / 10.0, pB / 10.0);
            }
         }
         out.println();
      }
   }

   void run() {
      in = new Scanner(System.in);
      out = new PrintWriter(System.out);
      try {
         solve();
      } finally {
         out.close();
      }
   }

   public static void main(String args[]) {
      new Check().run();
   }
}
