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

#define REP(i,n) for(int i=0;i<(n);i++)
#define FOR(i,m,n) for(int i=m;i<(n);i++)
#define ALL(x) x.begin(),x.end()
#define ll long long
typedef pair<int,int> pii;

bool done[110][110];
double dp[110][110];
int N,T,L,B;
bool isL[110],isB[110];
double rec(int i,int t){
	if(t<0)return 0;
	if(i==N){
		if(t==0)return 1;
		else return 0;
	}
	if(done[i][t])return dp[i][t];
	double ret = 0;
	if(isL[i]){
		FOR(j,1,7){
			int nxt = i+j;
			if(nxt>N){
				nxt= N-(nxt-N);
			}
			ret+=(1.0/6)*rec(nxt,t-2);
		}
	}
	else if(isB[i]){
		FOR(j,1,7){
			int nxt = j;
			if(nxt>N){
				nxt= N-(nxt-N);
			}
			ret+=(1.0/6)*rec(nxt,t-1);
		}
	}
	else{
		FOR(j,1,7){
			int nxt = i+j;
			if(nxt>N){
				nxt= N-(nxt-N);
			}
			ret+=(1.0/6)*rec(nxt,t-1);
		}
	}

	done[i][t]=true;
	return dp[i][t]=ret;
}

void init(){
	cin>>N>>T>>L>>B;
	if(N==0)exit(0);
	REP(i,101){
		isL[i]=false;
		isB[i]=false;
		REP(j,101){
			done[i][j]=false;
			dp[i][j]=0;
		}
	}
	REP(i,L){
		int x;cin>>x;
		isL[x]=true;
	}
	REP(i,B){
		int x;cin>>x;
		isB[x]=true;
	}
	REP(t,T+1){
		done[N][t]=true;
		dp[N][t]=0;
	}
	dp[N][0]=1;
	REP(i,N){
		done[i][0]=true;
		done[i][1]=true;
		dp[i][0]=0;
		if(i+6<N){
			dp[i][1]=0;
		}
		else if(isL[i]){
			dp[i][1]=0;
		}
		else if(isB[i]){
			if(N<=6)dp[i][1]=1.0/6;
		}
		else{
			dp[i][1]=1.0/6;
		}
	}
} 

void solve(){
	init();
	double ans = 0;
	REP(t,T+1){
		ans+=rec(0,t);
	}
	cout<<fixed<<setprecision(10)<<ans<<endl;
	//printf("%.10lf\n",ans);
}

signed main() {
	while (true) {
		solve();
	}
}
