import scala.io.StdIn._
object Main extends App {
  val n = readInt()
  val playerScore = readInt()
  val others = Array.tabulate(n - 1){_ ⇒
    val param = readLine.trim.split(' ').map(_.toInt)
    (param.head, param.tail.map(_ / 100.0))
  }
  implicit val memo = Array.fill(1 << (n - 1)){-1.0}
  memo(0) = 1.0

  println(solve(BitSet(n - 1), playerScore, others).formatted("%.10f"))

  class BitSet private (val toInt: Int) extends Iterable[Int] {
    override def iterator: Iterator[Int] = {
      var result = Nil: List[Int]
      var state = toInt
      var count = 0
      while (state > 0) {
        if ((state & 1) == 1) {
          result ::= count
        }
        count += 1
        state /= 2
      }
      result.iterator
    }
    def +(value: Int) = new BitSet(toInt | (1 << value))
    def -(value: Int) = new BitSet(toInt & ~(1 << value))
    def isSet(value: Int) = (toInt & (1 << value)) != 0
    def subset: List[BitSet] = {
      var result = Nil: List[BitSet]
      var state = 0
      while (state != toInt) {
        result ::= new BitSet(state)
        state = (state | ~toInt) + 1
        state &= toInt
      }
      result
    }
  }
  object BitSet {
    def apply(): BitSet = new BitSet(0)
    def apply(size: Int): BitSet = new BitSet((1 << size) - 1)
  }
  def solve(rest: BitSet, playerScore: Int, probability: Array[(Int, Array[Double])])(implicit memo: Array[Double]): Double = {
    if (memo(rest.toInt) >= 0) {
      memo(rest.toInt)
    }else {
      val maxScore = rest.map(i ⇒ probability(i)._1).max
      val nexts = (0 until 3).map { hand ⇒
        List(
          if (maxScore > playerScore) 0 else probabilityForDraw(rest, hand, probability),
          rest.subset.map{subset ⇒
            probabilityForWin(rest, subset, hand, probability) * solve(subset, playerScore, probability)
          }.sum).sum
      }
      memo(rest.toInt) = nexts.max
      memo(rest.toInt)
    }
  }
  def probabilityForWin(all: BitSet, winner: BitSet, winnersHand: Int, probability: Array[(Int, Array[Double])]): Double = {
    var result = 1.0
    for (player ← all) {
      if (winner.isSet(player)) {
        result *= probability(player)._2(winnersHand)
      }else {
        result *= probability(player)._2((winnersHand + 2) % 3)
      }
    }
    result
  }
  def probabilityForDraw(player: BitSet, hand: Int, probability: Array[(Int, Array[Double])]): Double = {
    var allSame = 1.0
    var notWin = 1.0
    var notLose = 1.0
    for (p ← player){
      allSame *= probability(p)._2(hand)
      notWin *= probability(p)._2(hand) + probability(p)._2((hand + 1) % 3)
      notLose *= probability(p)._2(hand) + probability(p)._2((hand + 2) % 3)
    }
    1 - notWin - notLose + 2 * allSame
  }

}
