시간 제한
메모리 제한
시간 제한
2초
메모리 제한
128 MB
N명의 학생이 한 줄로 서 있다. 이 학생들을 모두 한 번씩 사용해 새 순서로 재배열하려고 한다. 새 순서에서 서로 이웃한 두 학생의 키 차이는 항상 K를 초과해야 한다.
예를 들어 키가 1, 3, 5, 2, 6, 4인 순서로 놓이면 이웃한 모든 두 학생의 키 차이가 1을 초과한다. 반면 1, 3, 6, 5, 2, 4에서는 6과 5의 차이가 1이므로 조건을 만족하지 않는다.
현재 주어진 학생들을 섞어서 조건을 만족하는 순서로 배열하는 방법의 수를 구하라. 키가 같은 학생이 있더라도 학생이 다르면 서로 다른 배열로 센다.
첫 줄에 학생의 수 N(1 ≤ N ≤ 16)과 이웃한 두 학생의 키 차이가 초과해야 하는 값 K(1 ≤ K ≤ 3,400)가 주어진다.
다음 N개의 줄에는 현재 서 있는 순서대로 학생들의 키가 하나씩 주어진다. 각 키는 25,000 이하의 자연수이다.
조건을 만족하는 가능한 배열의 수를 첫 줄에 출력한다.