#include <iostream>
#include <vector>
using namespace std;
#define MAX_N 200
int sugoroku[MAX_N],tmp,nv,nt;
double dp[MAX_N][MAX_N],per;
double tmpdp[MAX_N][MAX_N];
void solve(int n,int t,int l,int b){
  if(n==0){
    return;
  }
  fill(sugoroku,sugoroku+n+1,0);
  fill(dp[0],dp[t+1],0);
  fill(tmpdp[0],tmpdp[t+1],0);
  dp[0][0]=1;
  for(int i=0;i<l;i++){
    cin >> tmp;
    sugoroku[tmp]=1;
  }
  for(int i=0;i<b;i++){
    cin >> tmp;
    sugoroku[tmp]=2;
  }
  for(int i=0;i<t;i++){
    for(int j=0;j<n;j++){
      if(sugoroku[j]==1){
        tmpdp[i+1][j]+=dp[i][j];
        nt = i+2;
      }else{
        nt = i+1;
      }
      per = dp[i][j]/6;
      for(int k=1;k<=6;k++){
        nv = j+k;
        if(nv>n){
          nv = n-(nv-n);
        }
        if(sugoroku[nv]==2){
          dp[nt][0] += per;
        }else{
          dp[nt][nv] += per;
        }
      }
      dp[i][j] += tmpdp[i][j];
    }
    dp[i+1][n]+=dp[i][n];
  }
  /*
  for(int i=0;i<=t;i++){
    double tmp=0;
    for(int j=0;j<=n;j++){
      cout << dp[i][j]<< " ";
      tmp += dp[i][j];
    }
    cout << tmp<<endl;
  }
  */
  printf("%.9f\n",dp[t][n]);
  cin >> n >> t >> l >> b;
  solve(n,t,l,b);
}
int main(void){
  int n,t,l,b;
  cin >> n >> t >> l >> b;
  solve(n,t,l,b);
}

