만드는 중입니다

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

댄스타임

면접 대비

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

요약
호영이가 N라운드 동안 실수를 한 번까지만 허용하며 춤을 고르는 방법의 수를 10^9+7로 나눈 나머지로 구합니다.
난이도

보통10점 중 4점

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

문제

호영이는 기대하던 WooJeans의 팬미팅에 갔다. 팬미팅의 하이라이트인 댄스타임에서는 마지막 라운드를 통과한 팬에게 사인 앨범을 준다. 열혈팬 호영이도 사인 앨범을 받으려고 춤 연습을 열심히 하고 있다.

댄스타임은 NN개의 라운드로 이루어져 있다. 각 라운드에서는 리더 우진이 바라보는 방향에 따라 올바른 춤을 춰야 한다. 올바른 춤은 다음과 같다.

  • 우진이 앞을 보고 춤을 추면 호영이는 우진과 같은 춤을 춰야 한다.
  • 우진이 뒤를 보고 춤을 추면 호영이는 우진과 다른 춤을 춰야 한다.

댄스타임에서는 올바르지 않은 춤을 최대 한 번까지 춰도 해당 라운드를 통과한다. 두 번 이상 올바르지 않은 춤을 추면 그 라운드에서 떨어진다.

호영이가 마지막 라운드까지 통과하여 사인 앨범을 받을 수 있는 경우의 수를 구하라. 적어도 하나의 라운드에서 호영이가 추는 춤의 종류가 다르면 다른 경우로 센다. 호영이는 우진이 출 수 있는 모든 춤을 알고 있다.

입력

첫째 줄에 댄스타임의 라운드 개수 NN과 우진이 출 춤 종류의 개수 MM이 공백으로 구분되어 주어진다. (1≤N≤100 0001 \le N \le 100\,000, 1≤M≤1001 \le M \le 100)

둘째 줄부터 N+1N+1번째 줄까지 각 줄에 우진이 추는 춤의 종류 AiA_i와 우진이 바라보는 방향 BiB_i가 공백으로 구분되어 주어진다. (1≤Ai≤M1 \le A_i \le M, 0≤Bi≤10 \le B_i \le 1)

우진은 BiB_i가 00이면 앞, 11이면 뒤를 보고 춤을 춘다.

출력

첫째 줄에 호영이가 사인 앨범을 받을 수 있는 경우의 수를 1 000 000 0071\,000\,000\,007로 나눈 나머지를 출력한다.

예제1

  1. 예제 1

    입력
    4 4
    1 0
    3 1
    2 0
    4 1
    
    예상 출력
    69