#include <iostream>
#include <cstring>

using namespace std;

int main(){
	int N, T, L, B;
	while(cin >> N >> T >> L >> B, N){
		bool lose[101], back[101];
		memset(lose, false, sizeof(lose));
		memset(back, false, sizeof(back));
		for(int i=0;i<L;i++){
			int idx; cin >> idx; lose[idx] = true;
		}
		for(int i=0;i<B;i++){
			int idx; cin >> idx; back[idx] = true;
		}
		double dp[102][101];
		for(int i=0;i<=T;i++)
			for(int j=0;j<=N;j++) dp[i][j] = 0.0;
		dp[0][0] = 1.0;
		for(int i=0;i<T;i++){
			for(int j=0;j<N;j++){
				for(int k=1;k<=6;k++){
					int pos = j+k<=N ? j+k : N-(j+k-N);
					if(back[pos]) pos = 0;
					dp[i+1+lose[pos]][pos] += dp[i][j]/6;
				}
			}
		}
		double res = 0.0;
		for(int i=1;i<=T;i++) res += dp[i][N];
		printf("%.8lf\n", res);
	}
}