고층 빌딩
시간 제한2초메모리 제한512 MB
서로 다른 N개의 높이를 배열할 때, 인접한 높이 차의 합이 L 이하가 되는 순열의 개수를 10^9+7로 나눈 나머지로 구합니다.
문제
국제 정보 올림피아드(IOI)가 일본 쓰쿠바시에서 열린다. IOI를 준비하기 위해 쓰쿠바시는 큰길을 따라 고층 빌딩 개를 일직선으로 세울 계획이다. 빌딩의 높이는 이며, 모든 높이는 서로 다르다. 빌딩의 순서는 아직 정해지지 않았으므로, 필요하면 높이의 순서를 바꿀 수 있다. 장식 자재에는 제약이 있어서, 인접한 두 빌딩 높이 차이의 절댓값의 합은 이하여야 한다. 길의 한쪽 끝에서부터 높이가 이라면 다음 조건을 만족해야 한다.
여기서 는 의 절댓값이다. 이 조건을 만족하는 빌딩의 순열 개수를 구하는 프로그램을 작성하라.
입력
첫째 줄에 빌딩의 개수 과 이 공백으로 구분되어 주어진다. 둘째 줄에는 개의 정수 이 공백으로 구분되어 주어진다. 는 번째 빌딩의 높이이다.
출력
조건을 만족하는 순열의 개수를 1000000007로 나눈 나머지를 한 줄에 출력한다.
제한
- 인 모든 에 대해