loop do
    n, t, l, b = gets.split.map(&:to_i)
    break if n == 0 && t == 0
    lose = Array.new(n+1,false)
    l.times do
        lose[gets.to_i] = true
    end
    back = Array.new(n+1,false)
    b.times do
        back[gets.to_i] = true
    end
    dp = Array.new(t+2).map{Array.new(n+1, 0.0)}
    dp[0][0] = 1.0

    1.upto(t) do |i|
        n.times do |s|
            1.upto(6) do |d|
                nt = s + d
                nt = n - (nt - n) if nt > n
                if back[nt]
                    dp[i][0] += 1.0/6.0 * dp[i-1][s]
                    dp[i][nt] = 0
                elsif lose[nt]
                    dp[i+1][nt] += 1.0/6.0 * dp[i-1][s]
                else
                    dp[i][nt] += 1.0/6.0 * dp[i-1][s]
                end
            end
        end
    end
    puts dp.map{|m| m[n]}.inject(:+)
end