Kui palju võimalusi?

시간 제한2초메모리 제한1024 MB

요약
엇갈린 육각형 키보드 격자에서 연속한 키 사이의 거리가 주어진 K+1개의 키 입력 순서의 수를 센다.
난이도

어려움10점 중 8점

유형
동적 계획법, 수학, 조합론
정답자
아직 제출이 없습니다

문제

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

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 ja 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 (2≤N≤3002 \le N \le 300, 1≤K≤501 \le K \le 50). Teisel real on KK tühikutega eraldatud täisarvu A_1A\_1, A_2A\_2, …\ldots, A_KA\_K (1≤A_i<N1 \le A\_i < N), kus A_iA\_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.

예제3

  1. 예제 1

    입력
    2 1
    1
    
    예상 출력
    10
    
  2. 예제 2

    입력
    4 3
    1 1 2
    
    예상 출력
    1642
    
  3. 예제 3

    입력
    6 7
    2 4 5 1 3 5 5
    
    예상 출력
    6969072