#include<bits/stdc++.h>
using namespace std;

int N, T, L, B;
int lose[105];
int back[105];
int board[105];
double p[2][105], losep[2][105];
double memo[105][105];
double dfs(int t, int idx){
	if(idx == N) return 1.0;
	if(t <= 0) return 0;
	if(memo[t][idx] != -1.0) return memo[t][idx];
	double ans = 0;
	for(int i = 1; i <= 6; i++){
		int ni = idx + i;
		if(ni > N) ni = N - (ni - N);
		if(board[ni] == 1){
			ans += dfs(t - 2, ni) / 6.0;
		}else if(board[ni] == 2){
			ans += dfs(t - 1, 0) / 6.0;
		}else{
			ans += dfs(t - 1, ni) / 6.0;
		}
	}
	return memo[t][idx] = ans;
}

int main(){
	while(cin >> N >> T >> L >> B, N){
		for(int i = 0; i <= N; i++){
			board[i] = 0;
		}
		for(int i = 0; i < L; i++){
			cin >> lose[i];
			board[lose[i]] = 1;
		}
		for(int i = 0; i < B; i++){
			cin >> back[i];
			board[back[i]] = 2;
		}
		for(int i = 0; i <= T; i++){
			for(int j = 0; j <= N; j++){
				memo[i][j] = -1.0;
			}
		}
		
		printf("%.10f\n", dfs(T, 0));
	}
}