loop do
  n, t, l, b = gets.split.map(&:to_i)
  break if n == 0
  lose = [false] * n
  back = [false] * n
  l.times{ lose[gets.to_i] = true }
  b.times{ back[gets.to_i] = true }
  board = 2.times.map { [0.0] * (n + 1) }
  board[0][0] = 1.0
  t.times do
    nboard = 2.times.map{ [0.0] * (n + 1) }
    n.times do |i|
      nboard[0][i] += board[1][i] if lose[i]
      (1..6).each do |k|
        j = i + k < n + 1 ? i + k : 2 * n - (i + k)
        if lose[j]
          nboard[1][j] += board[0][i] / 6
        elsif back[j]
          nboard[0][0] += board[0][i] / 6
        else nboard[0][j] += board[0][i] / 6
        end
      end
    end
    nboard[0][n] += board[0][n]
    board = nboard
  end
  printf "%.8f\n" % board[0][n]
end