Kui palju võimalusi? | 프로그래밍의 벗 PivotOJ
PivotOJ

Kui palju võimalusi?

시간 제한: 2000ms메모리 제한: 1024MB출처: EIO 2019-20 prelimBOJ 29922
이 문제는 본문 이미지 일부가 표시되지 않습니다. 텍스트만으로 풀이가 어려울 수 있습니다.

문제

UFOsid juhitakse hiiglaslike klaviatuuridega, millel on NN rida, igas reas NN klahvi. Iga järgmine klahvirida algab eelmisest reast poole klahvi võrra paremal.

[이미지 1]

Kaks klahvi on naabrid, kui nad puutuvad külgepidi kokku. Klahvide AA ja BB vaheline kaugus on minimaalne sammude arv, millega saab klahvilt AA klahvile BB, kui igal sammul liikuda klahvilt mõnele tema naabrile. Näiteks eeloleval joonisel on klahvide [이미지 2] ja [이미지 3] vaheline kaugus 4.

On käimas UFOde vaheline sõda. Vaenlase UFO on just alustamas keerukat manöövrit; piloot tegi selleks K+1K + 1 klahvivajutust. Et teha vastumanöövrit, oleks kasulik teada, milliseid klahve vajutati. Meie teame aga ainult esimese ja teise vajutatud klahvi vahelist kaugust, teise ja kolmanda vajutatud klahvi vahelist kaugust jne. Mitu erinevat klahvivajutuste jada sellele infole vastab?

Et tegelik vastus võib olla üüratult suur, väljastada see mooduli 109+710^9 + 7 järgi.

입력

Faili esimesel real on kaks täisarvu NN ja KK (2N3002 \le N \le 300, 1K501 \le K \le 50). Teisel real on KK tühikutega eraldatud täisarvu A1A_1, A2A_2, \ldots, AKA_K (1Ai<N1 \le A_i < N), kus AiA_i on ii-nda ja i+1i + 1-nda vajutatud klahvi vaheline kaugus.

출력

Faili ainsale reale väljastada üks täisarv: võimalike klahvivajutuste jadade arv mooduli 109+710^9 + 7 järgi.

예제

예제 1

입력
2 1
1
출력
10

예제 2

입력
4 3
1 1 2
출력
1642

예제 3

입력
6 7
2 4 5 1 3 5 5
출력
6969072
코드를 제출하려면 로그인하세요.