백개먼을 아주 단순하게 바꾼 1인용 변형 게임 “미니멀 백개먼”을 소개한다. 이 게임은 한 명의 플레이어가 주사위 하나와 말(플레이어의 토큰) 하나만으로 진행한다.
게임판은 $0$번(출발점)부터 $N$번(도착점)까지 번호가 매겨진 $N + 1$개의 칸이 한 줄로 놓인 형태다. 처음에 말은 출발점(칸 $0$)에 놓이며, 목표는 말을 도착점(칸 $N$)으로 옮기는 것이다. 매 턴마다 플레이어는 주사위를 굴리는데, 주사위는 $1$부터 $6$까지의 정수를 각각 같은 확률로 보여 주며, 말은 나온 수만큼 앞으로 나아간다.
말은 도착점을 지나칠 수 없다. 굴린 값이 말을 도착점 너머로 보내는 경우, 말은 도착점까지 간 뒤 초과한 칸 수만큼 도착점에서 되돌아온다. 예를 들어 말이 칸 $N - 3$에 있을 때 $5$가 나오면, 도착점을 넘는 초과분이 $2$이므로 말은 칸 $N - 2$로 간다. 다음 턴에는 다시 평소처럼 도착점을 향해 나아간다.
출발점과 도착점을 제외한 각 칸에는 다음 두 가지 특수 지시 중 하나가 있을 수 있다.
게임판의 구성(크기 $N$과 특수 칸들의 위치)이 주어질 때, 주어진 턴 수 안에 게임을 성공(말이 도착점에 도달)할 확률을 구하시오.
입력은 여러 개의 데이터셋으로 이루어진다. 각 데이터셋의 형식은 다음과 같다.
N T L B
Lose_1
...
Lose_L
Back_1
...
Back_B
$N$은 도착점의 번호로 $5 \le N \le 100$을 만족한다. $T$는 턴 수이며, $T$턴 안에 성공할 확률을 구해야 한다. $T$는 $1 \le T \le 100$을 만족한다. $L$은 “한 턴 쉬기”로 표시된 칸의 개수로 $0 \le L \le N - 1$을 만족한다. $B$는 “출발점으로 돌아가기”로 표시된 칸의 개수로 $0 \le B \le N - 1$을 만족한다. 이 네 값은 공백으로 구분된다.
Lose 목록의 각 값은 “한 턴 쉬기” 칸의 번호로 $1 \le$ 값 $\le N - 1$을 만족하며, 서로 다르고 오름차순으로 주어진다. Back 목록의 각 값은 “출발점으로 돌아가기” 칸의 번호로 $1 \le$ 값 $\le N - 1$을 만족하며, 서로 다르고 오름차순으로 주어진다. 같은 번호가 Lose 목록과 Back 목록에 동시에 나오는 일은 없다.
입력의 끝은 공백으로 구분된 네 개의 $0$으로 이루어진 줄로 표시된다.
각 데이터셋에 대해, 주어진 턴 수 안에 게임을 성공할 확률을 소수점 아래 정확히 여섯 자리로 반올림하여 한 줄에 출력한다 (예: printf("%.6f")).