꽃 구매하기

0 <= x_i <= f_i이고 합이 S인 정수 수열 x_i의 개수를 구한다. N은 20 이하, S는 1e14 이하다.

보통7조합론동적 계획법수학비트 연산아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

상근이는 여자친구에게 줄 꽃을 정확히 SS송이 사려고 한다.

동네에는 꽃집이 NN개 있고, ii번째 꽃집은 꽃을 최대 fif_i송이까지 판다. 한 꽃집이 파는 꽃은 모두 색이 같고, 색이 같은 꽃끼리는 구분할 수 없다. 서로 다른 꽃집이 같은 색 꽃을 파는 경우는 없다.

그래서 구매 방법은 각 꽃집에서 몇 송이를 사는지로 정해진다. 즉 0xifi0 \le x_i \le f_i이고 x1+x2++xN=Sx_1 + x_2 + \cdots + x_N = S인 정수 수열 (x1,x2,,xN)(x_1, x_2, \ldots, x_N)의 개수를 세면 된다.

꽃을 정확히 SS송이 사는 방법의 수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 NNSS가 주어진다. (1N201 \le N \le 20, 0S10140 \le S \le 10^{14})

둘째 줄에 f1,f2,,fNf_1, f_2, \ldots, f_N이 공백으로 구분되어 주어진다. (0fi10120 \le f_i \le 10^{12})

출력

꽃을 정확히 SS송이 사는 방법의 수를 109+710^9 + 7로 나눈 나머지를 첫째 줄에 출력한다.