#include<iostream>
#include <set>
#include <stdio.h>

using namespace std;

int n, t, l, b;
set<int> setL, setB;
double dp[105][105];

int main(void)
{
  while(1){
    cin >> n >> t >> l >> b;
    if(n == 0) break;
    int x;
    setL.clear(), setB.clear();
    for(int i = 1; i <= l; i++){
      cin >> x;
      setL.insert(x);
    }
    for(int i = 1; i <= b; i++){
      cin >> x;
      setB.insert(x);
    }

    for(int i = 0; i <= t; i++){
      for(int j = 0; j <= n; j++){
        dp[i][j] = 0;
      }
    }
    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 nj = j + k;
          if(nj > n) nj = n - (nj-n);

          int ni = i+1;
          if(setB.count(nj)) nj = 0;
          else if(setL.count(nj)) ni++;

          if(ni <= t) dp[ni][nj] += dp[i][j] / 6;
        }
      }
    }

    double ans = 0;
    for(int i = 0; i <= t; i++) ans += dp[i][n];
    printf("%.11f\n", ans);
  }

  return 0;
}

