import scala.collection.mutable

object Main extends App {

  import scala.io.StdIn._

  val n = readLine.trim.toDouble
  val sushi = readLine.trim.split(' ').map(_.toInt).groupBy(i ⇒ i).withDefault(_ ⇒ Array())
  val sushiState = SushiState(sushi(1).length, sushi(2).length, sushi(3).length)
  val map = mutable.Map[SushiState, Double]()
  println(search(sushiState))
  def search(sushiState: SushiState): Double = {
    val singleOnly = Array.tabulate(301){_ ⇒ 0d}
    for (i ← 1 until singleOnly.length){
      singleOnly(i) = singleOnly(i - 1) + n / i
    }
    def sub(sushiState: SushiState): Double = {
      if (sushiState.single == 0 && sushiState.double == 0 && sushiState.triple == 0) 0
      else if (sushiState.double == 0 && sushiState.triple == 0){
        singleOnly(sushiState.single)
      }
      else {
        if (map.contains(sushiState)) map(sushiState)
        else {
          val bias = (sushiState.single + sushiState.double + sushiState.triple) / n
          var res = 1d
          if (sushiState.triple != 0){
            res += sushiState.triple / n * sub(sushiState.copy(double = sushiState.double + 1, triple = sushiState.triple - 1))
          }
          if (sushiState.double != 0){
            res += sushiState.double / n * sub(sushiState.copy(single = sushiState.single + 1, double = sushiState.double - 1))
          }
          if (sushiState.single != 0){
            res += sushiState.single / n * sub(sushiState.copy(single = sushiState.single - 1))
          }
          map(sushiState) = res / bias
          res / bias
        }
      }
    }
    sub(SushiState(50, 50, 50))
    sub(sushiState)
  }
  case class SushiState(single: Int, double: Int, triple: Int)
  implicit class Extend[T](value: T){
    def also(func: T ⇒ Unit): T = {func(value); value}
    def let[A](func: T ⇒ A): A = func(value)
  }
}