#include <iostream>
#include <cstdio>
#define N_MAX 102
using namespace std;
int main(){
  int N,T,L,B,in,data[N_MAX];
  bool visited[N_MAX][N_MAX];
  double dp[N_MAX][N_MAX];
  while(1){
    cin>>N>>T>>L>>B;
    if(!N&&!T&&!L&&!B) break;
    for(int i=0;i<=T;i++)
      for(int j=0;j<=N;j++) dp[i][j]=0,data[j]=0;
    for(int i=0;i<L;i++) cin>>in,data[in]=1;
    for(int i=0;i<B;i++) cin>>in,data[in]=2;
    dp[0][0]=1;
    for(int i=0;i<T;i++)
      for(int j=0;j<N;j++){
	for(int k=1;k<=6;k++){
	  int nx=j+k;
	  if(nx>N) nx=N-nx%N;
	  if(data[nx]==0) dp[i+1][nx]+=dp[i][j]/6;
	  else if(i+2<=T&&data[nx]==1) dp[i+2][nx]+=dp[i][j]/6;
	  else if(data[nx]==2) dp[i+1][0]+=dp[i][j]/6;
	}
      }
    double sum=0;
    for(int i=1;i<=T;i++) sum+=dp[i][N];
    printf("%.6f\n",sum);
  }
  return 0;
}