#include<iostream>
#include<vector>
#include<cstdio>

using namespace std;

int main() {
    while (1) {
        int n, t, l, b;

        cin >> n >> t >> l >> b;
        if (n == 0) break;
        int pn = 2 * n + 2;
        vector<double> p (pn, 0);
        vector<int> map(pn, 0);

        for (int i = 0; i < l; ++i) {
            int li; cin >> li; map[li] = 1;
        }
        for (int i = 0; i < b; ++i) {
            int bi; cin >> bi; map[bi] = -1;
        }
        p[0] = 1;

        for (int ti = 0; ti < t; ++ ti) {
            vector<double> temp(pn, 0);
            for (int i = 0; i < pn; ++i) {
                if (map[i] == -1) continue;
                else if (map[i] == 1) temp[i + n + 1] += p[i];
                else if (i == n) temp[i] += p[i];
                else {
                    for (int d = 1; d <= 6; ++d) {
                        int to = i > n ? i - (n + 1) + d : i + d;
                        if (to > n) to = n - (to - n);
                        if (map[to] == -1) to = 0;
                        temp[to] += p[i] * 1. / 6;
                    }
                }
            }
            for (int i = 0; i < pn; ++i) {
                p[i] = temp[i];
                //printf("%.2f ", p[i]);
            }
            //cout << endl;
        }

        printf("%.6f\n", p[n]);
    }
}
