loop do
    n, t, l, b = gets.split.map(&:to_i)
    break if n == 0

    lose = {}
    l.times do
        lose[gets.to_i] = 1
    end

    back = {}
    b.times do
        back[gets.to_i] = 1
    end

    prob = (0..t+1).map { [0] * (n+1) }
    prob[0][0] = 1.0

    (1..t).each do |i|
        prob[i][n] += prob[i-1][n]
        (0..n-1).each do |j|
            (1..6).each do |d|
                k = j
                loop do
                    k += d
                    if k > n
                        d = n - k
                        k = n
                    elsif k < 0
                        d = -k
                        k = 0
                    else
                        break
                    end
                end

                if lose[k]
                    prob[i+1][k] += prob[i-1][j] / 6
                elsif back[k]
                    prob[i][0] += prob[i-1][j] / 6
                else
                    prob[i][k] += prob[i-1][j] / 6
                end
            end
        end
    end
    printf("%.6f\n", prob[t][n])
end