만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

몇 가지 가능성인가

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

요약
N행 N열의 엇갈린 키보드에서 연속한 두 키의 거리가 주어질 때, 가능한 키 입력 순서의 개수를 10^9+7로 나눈 나머지로 구합니다.
난이도

보통10점 중 7점

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

문제

UFO는 거대한 키보드로 조종된다. 키보드에는 NN개의 행이 있고, 각 행에는 NN개의 키가 있다. 각 행은 이전 행보다 키 반 개만큼 오른쪽에서 시작한다.

두 키가 변을 맞대고 붙어 있으면 이웃이다. 키 AA와 BB 사이의 거리는 이웃한 키로 한 칸씩 옮겨 AA에서 BB까지 갈 때 필요한 최소 이동 횟수다. 그림에서 키 와 사이의 거리는 4이다.

UFO끼리 전쟁이 벌어지고 있다. 적 UFO가 복잡한 기동을 막 시작했고, 조종사는 이를 위해 키를 K+1K+1번 눌렀다. 대응 기동을 짜려면 어떤 키가 눌렸는지 알면 유리하다. 하지만 우리가 아는 것은 첫 번째와 두 번째로 누른 키 사이의 거리, 두 번째와 세 번째로 누른 키 사이의 거리 등뿐이다. 이 정보에 맞는 서로 다른 키 누름 순서는 몇 개인가?

실제 답은 매우 클 수 있으므로 109+710^9 + 7로 나눈 나머지를 출력하라.

입력

파일의 첫 줄에 정수 NN과 KK가 주어진다 (2≤N≤3002 \le N \le 300, 1≤K≤501 \le K \le 50). 둘째 줄에는 공백으로 구분된 정수 A1,A2,…,AKA_1, A_2, \ldots, A_K (1≤Ai<N1 \le A_i < N)가 주어진다. AiA_i는 ii번째로 누른 키와 i+1i+1번째로 누른 키 사이의 거리이다.

출력

가능한 키 누름 순서의 개수를 109+710^9 + 7로 나눈 나머지 한 정수를 출력한다.

예제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