영글이는 블록놀이를 한다. 영글이가 가진 블록은 K 종류이고, 모두 높이가 1이며 너비는 1부터 K까지이다. 너비가 같은 블록은 색이 모두 같다. 너비가 다르다고 해서 색까지 다르지는 않다. 각 종류의 블록은 무한히 많다. 예를 들어 K=3이고 세 블록의 색이 모두 다르면, 아래 세 가지 블록을 얼마든지 쓸 수 있다.

영글이는 이 블록을 너비가 W인 바닥 블록 위에 쌓는다. 너무 높으면 가지고 놀기 불편하므로 높이가 H 이하가 되게 쌓는다. 아래 그림은 W=6인 예이다.
블록은 칸에 정확히 맞춰 놓아야 하고, 놓인 블록 밑에는 빈 공간이 없어야 한다. 왼쪽 그림은 규칙을 지킨 예이고, 오른쪽 그림은 지키지 못한 예이다.

왼쪽 그림에서는 모든 블록이 규칙을 지켜 쌓여 있고 높이는 4이다. 오른쪽 그림에서는 맨 왼쪽 빨간 블록이 칸에 맞지 않는다. 파란 블록의 가운데 아래가 비어 있고, 맨 오른쪽 빨간 블록의 아래도 비어 있다. 그래서 오른쪽은 제대로 쌓은 경우가 아니다.
규칙을 지켜 블록을 쌓는 경우의 수를 구하라. 정면에서 보았을 때 모든 칸의 색이 같은 두 쌓기는 한 가지로 센다. 아무것도 쌓지 않은 경우도 한 가지로 센다.
첫째 줄에 블록 종류의 수 K (1≤K≤300), 바닥 블록의 너비 W, 쌓을 수 있는 최대 높이 H (1≤W,H≤300)가 공백으로 구분되어 주어진다.
둘째 줄에 정수 K개가 주어진다. i번째 수 Ci (1≤Ci≤K)는 너비가 i인 블록의 색이다.
규칙을 지켜 블록을 쌓는 경우의 수를 1,000,000,007로 나눈 나머지를 출력한다.