Funktion

Time limit: 1s Memory limit: 64MB Input: Output:

Cerință

Se dă un șir AA de NN termeni pe care definim următoarea funcție f(st,dr,k)f(st,dr,k):

f(st,dr,0)=vst+vst+1+...+vdrf(st,dr,0) = v_{st} + v_{st+1} + ... + v_{dr}
f(st,dr,k)=i=stdrj=idrf(i,j,k1),k>0f(st,dr,k) = \sum_{i=st}^{dr} \sum_{j=i}^{dr} f(i,j,k-1), k>0

Practic funcția pe nivelul 00 reprezintă suma unei subsecvențe, iar pe orice alt nivel facem suma valorilor funcției tuturor subsecvențelor de pe nivelul anterior.

Cât este f(1,N,K)f(1,N,K) modulo 109+710^9+7, pentru un KK dat?

Date de intrare

Pe prima linie se găsesc două numere întregi, NN și KK.
Pe următorul rând se găsesc termenii șirului AA.

Date de ieșire

Se va tipări valoarea dorită modulo 109+710^9+7.

Restricții și precizări

  • 1N,K1061 \leq N, K \leq 10^6;
  • 109Ai109-10^9 \leq A_i \leq 10^9;

Subtaskuri

  • Pentru 5p5p : K=1K=1
  • Pentru alte 15p15p : N=2N=2
  • Pentru alte 20p20p : 1N,K201 \leq N, K \leq 20
  • Pentru alte 15p15p : AA are un singur element nenul

Exemplul 1

stdin

3 1
1 2 3

stdout

20

Explicație

Problema cere practic suma tuturor subsecvențelor.

Exemplul 2

stdin

3 2
1 2 3

stdout

42

Log in or sign up to be able to send submissions!