만드는 중입니다

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

선우의 셋리스트

면접 대비

시간 제한1초메모리 제한512 MB

요약
곡을 여러 번 골라 재생 시간의 합이 정확히 N분이 되는 곡 순서의 개수를 10^9+7로 나눈 나머지로 구합니다.
난이도

보통10점 중 5점

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

문제

선우는 아주대학교의 3년 만의 대동제에서 공연으로 노래를 열창해 아주대학교 학생들의 마음을 사로잡고 싶다. 선우는 총 NN(1≤N≤10181\leq N \leq 10^{18})분 길이의 공연을 기획하고 있지만, 어떤 노래를 어떤 순서로, 몇 번씩 부를지는 아직 정하지 못했다.

예를 들어, 다음과 같은 후보곡이 있다고 하자. 1. <아주바캉스>, 아주 강 같은 평화, 33분. 2. <졸업할 수 있을까>, 컴공소년, 22분. 3. <벌써 사년>, 브라운 관즈, 11분. 4. <응급실>, 낫 이지, 55분. 5. <이미 아픈 성적>, 요다, 44분.

이 노래들로 10분 공연을 구성한다면 [3, 1, 3, 4], 즉 3번, 1번, 3번, 4번 곡 순서로 공연을 구성할 수 있다. 여기서 알 수 있듯이, 선우는 중간에 절대 쉬지 않는다! 같은 노래를 여러 번 부를 수도 있고, 어떤 후보곡은 쓰이지 않을 수도 있다. 이렇게 공연에서 부르는 노래를 순서대로 나열한 것을 셋리스트라고 한다.

후보곡의 수와 각 노래의 재생 시간이 주어질 때, 선우를 도와 정확히 NN분의 공연이 되는 셋리스트의 경우의 수를 구하라.

입력

첫 번째 줄에 공연 시간 NN(1≤N≤10181 \leq N \leq 10^{18})과 후보곡의 수 MM(2≤M≤100 0002 \leq M \leq 100\,000)이 공백으로 구분되어 주어진다. 두 번째 줄부터 M+1M+1번째 줄까지 각 줄에는 노래의 재생 시간 tit_i(1≤i≤M1 \leq i \leq M, 1≤ti≤51 \leq t_i \leq 5)가 주어진다.

출력

가능한 셋리스트의 경우의 수를 1 000 000 0071\,000\,000\,007(=109+7=10^9+7)로 나눈 나머지를 출력한다. 셋리스트를 구성할 수 없다면 정답은 00이다.

예제2

  1. 예제 1

    입력
    25 5
    5
    5
    5
    5
    5
    
    예상 출력
    3125
    
  2. 예제 2

    입력
    10 6
    2
    2
    2
    3
    4
    4
    
    예상 출력
    555