#include <iostream>
#include <cmath>
using namespace std;

int main(){
  int N, T, L, B;
  while(cin >> N >> T >> L >> B && N>0){
    bool lose[100], back[100];
    for(int i=0;i<100;i++) lose[i]=back[i]=false;
    
    int index;
    
    for(int i=0;i<L;i++){
      cin >> index;
      lose[index]=true;
    }
    for(int i=0;i<B;i++){
      cin >> index;
      back[index]=true;
    }

    double p[101][101];
    for(int i=1;i<=N;i++){
      p[i][0]=0.0;
      p[i][1]=(i<=6)?(1.0/6.0):0.0;
    }

    for(int tn=2;tn<=T;tn++){
      for(int lg=1;lg<=N;lg++){
	double pr=0.0;
	for(int i=1;i<=6;i++){
	  int to=abs(lg-i);
	  if(to==0)
	    pr+=1.0;
	  else if(back[N-to])
	    pr+=p[N][tn-1];
	  else if(lose[N-to])
	    pr+=p[to][tn-2];
	  else
	    pr+=p[to][tn-1];
	}
	p[lg][tn]=pr/6.0;
      }
    }
    cout << fixed << p[N][T] << endl;
  }

  return 0;
}