#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;

int N, T;
int M[101];

double solve() {
  double dp[101][101]; // [T][N]
  double inv6 = 1.0/6.0;
  fill(dp[0], dp[101], 0);
  dp[0][0] = 1.0;

  for(int i = 0; i < T; ++i) {
    for(int j = 0; j <= N; ++j) {
      if(j == N) {
	dp[i+1][N] += dp[i][N];
	continue;
      }
      if(dp[i][j] != 0) {
	for(int k = 1; k <= 6; ++k) {
	  int nn = j+k;
	  if(nn > N) {
	    nn = N-(nn-N);
	  }

	  if(M[nn] == 1) {
	    if(i+2 <= T) dp[i+2][nn] += dp[i][j]*inv6;
	  } else if(M[nn] == 2) {
	    dp[i+1][0] += dp[i][j]*inv6;
	  } else {
	    dp[i+1][nn] += dp[i][j]*inv6;
	  }
	}
      }
    }
  }

  return dp[T][N];
}

int main() {
  int L, B;
  while(( cin >> N >> T >> L >> B ) && ( N || T || L || B ) ) {
    fill(M, M+N, 0);
    for(int i = 0; i < L; ++i) {
      int p;
      cin >> p;
      M[p] = 1;
    }

    for(int i = 0; i < B; ++i) {
      int p;
      cin >> p;
      M[p] = 2;
    }

    printf("%.6f\n", solve());
  }
}