# gets.chomp.to_i
# gets.chomp.split(" ").map(&:to_i)
# gets.chomp.split(" ").map{|x| x.to_i}

while true
  n, t, l_, b_ = gets.chomp.split(" ").map{|x| x.to_i}
  if n==0
    break
  end
  p = Array.new(n+1) { Array.new(t+2, Rational(0, 1)) }

  l = Array.new(n, 0)
  for i in 1..l_
    tmp = gets.chomp.to_i
    l[tmp] = 1
  #  p[tmp] = Array.new(t+1) { Array.new(2, Rational(0, 1)) }
  end

  b = Array.new(n, 0)
  for i in 1..b_
    tmp = gets.chomp.to_i
    b[tmp] = 1
  end


  p[0][0] = Rational(1, 1)
  for time in 0..t-1
    for square in 0..n-1
      for dice in 1..6
        if square+dice > n
          dice = 2*n - (square+dice) - square
        end
        if l[square+dice] == 1
          p[square+dice][time+2] += p[square][time] / 6
          next
        end
        if b[square+dice] == 1
          p[0][time+1] += p[square][time] / 6
          next
        end
     #   if square+dice > n
     #     p[2*n - (square+dice)][time+1] += p[square][time] / 6
     #     next
     #   end
        p[square+dice][time+1] += p[square][time] / 6
      end
    end
  end

  pr = Rational(0, 1)
  for time in 1..t
    pr += p[n][time]
  end
  printf("%f\n", Float(pr))

end