#include <iostream>
#include <vector>
#include <algorithm>
#include <iomanip>
using namespace std;

int main(){
    while(1){
        int n,t,l,b;
        cin >> n >> t >> l >> b;
        if(n==0) break;

        vector<bool> isL(n+1, false), isB(n+1, false);
        for(int i=0; i<l; i++){
            int c;
            cin >> c;
            isL[c] = true;
        }
        for(int i=0; i<b; i++){
            int c;
            cin >> c;
            isB[c] = true;
        }

        vector<double> prob(n+1, 0.0);
        vector<double> skip(n+1, 0.0);
        prob[0] = 1.0;
        for(int i=0; i<t; i++){
            vector<double> next(n+1, 0.0);
            for(int j=0; j<n+1; j++){
                next[j] += skip[j];
                skip[j] = 0.0;
            }
            for(int j=0; j<n; j++){
                for(int d=1; d<=6; d++){
                    int dest = (j+d>n)? (2*n-d-j) : (j+d);
                    if(isB[dest]) dest = 0;
                    if(isL[dest]){
                        skip[dest] += prob[j]/6;
                    }else{
                        next[dest] += prob[j]/6;
                    }
                }
            }
            next[n] += prob[n];
            for(int j=0; j<n+1; j++){
                prob[j] = next[j];
            }
        }
        cout << fixed;
        cout << setprecision(7);
        cout << prob[n] << endl;
    }
    return 0;
}