#include <iostream>
#include <string.h>
#include <cmath>
#include <cstdio>

#define EPS 1e-9
#define MAX 102

using namespace std;

double dp[MAX][MAX];

bool relative_equal(double a, double b){
    if(a == 0) return fabs(b) < EPS;
    return fabs((a-b)/a) < EPS;
}

int main(void)
{
	int N,T,L,B;
	int i1,i2,i3;
	int lose,back;
	double temp1;
	int temp2;
	double c;

	while(1){
		cin>>N>>T>>L>>B;
		if(N+T+L+B==0) break;

		memset(dp,0,sizeof(dp));

		for(i1=0;i1<L;i1++){
			cin>>lose;
			dp[0][lose]=-1;
		}
		for(i1=0;i1<B;i1++){
			cin>>back;
			dp[0][back]=-2;

		}

		dp[0][0]=1;
		c=0;

		for(i1=0;i1<T;i1++){
			for(i3=0;i3<=N;i3++){

				if(dp[i1][i3]>0){
					temp1=dp[i1][i3]/6;
					for(i2=1;i2<=6;i2++){
						temp2=i3+i2;
						if(i3+i2>N) temp2=2*N-temp2;

						if(relative_equal(dp[0][temp2],-1)) dp[i1+2][temp2]+=temp1;
						else if(relative_equal(dp[0][temp2],-2)) {
							dp[i1+1][0]+=temp1;
							dp[i1+1][temp2]=0;
						} 
						else dp[i1+1][temp2]+=temp1;
					}
				}

			}
			c+=dp[i1+1][N];
			dp[i1+1][N]=0;
		}

		printf("%.6lf\n", c);
	}
	return 0;
}