#include <bits/stdc++.h>
using namespace std;
using ld = long double;
const ld os = (ld)1 / 6;

int main()
{
	cout << fixed << setprecision(8);
	int N, T, L, B;
	while (cin >> N >> T >> L >> B, N | T | L | B) {
		vector<int> d(N + 1);
		vector<vector<vector<ld>>> dp(T + 1, vector<vector<ld>>(N + 1, vector<ld>(2)));
		dp[0][0][0] = 1.0;
		for (int i = 0, l; i < L; i++) {
			cin >> l;
			d[l] = 1;
		}
		for (int i = 0, b; i < B; i++) {
			cin >> b;
			d[b] = 2;
		}
		for (int i = 1; i <= T; i++) {
			for (int j = 0; j < N; j++) {
				if (d[j] == 1) {
					dp[i][j][0] += dp[i - 1][j][1];
				}
				for (int k = 1; k <= 6; k++) {
					int ne = (j + k <= N ? j + k : N * 2 - (j + k));
					dp[i][ne][d[ne] == 1] += dp[i - 1][j][0] * os;
				}
			}
			for (int j = 1; j < N; j++) {
				if (d[j] == 2) {
					dp[i][0][0] += dp[i][j][0];
					dp[i][j][0] = 0;
				}
			}
			dp[i][N][0] += dp[i - 1][N][0];
		}
		cout << dp[T][N][0] << endl;
	}
	return 0;
}