#joi2012yod. [joi2012yo_d]パスタ (Pasta)

[joi2012yo_d]パスタ (Pasta)

問題

あなたはパスタが大好物であり,毎日,晩御飯にパスタを作って食べている.あなたはトマトソース,クリームソース,バジルソースの 33 種類のパスタを作ることができる.

NN 日間の晩御飯の予定を考えることにした.それぞれの日に 33 種類のパスタから 11 種類を選ぶ.ただし,同じパスタが続くと飽きてしまうので,33 日以上連続して同じパスタを選んではいけない.また,NN 日のうちの KK 日分のパスタはすでに決めてある.

入力として NN の値と,KK 日分のパスタの情報が与えられたとき,条件をみたす予定が何通りあるかを 10,00010\\,000 で割った余りを求めるプログラムを作成せよ.


入力

入力は K+1K + 1 行からなる.

11 行目には 22 つの整数 N,KN, K (3leqqNleqq1003 \\leqq N \\leqq 1001leqqKleqqN1 \\leqq K \\leqq N) が空白を区切りとして書かれている.

1+i1 + i 行目 (1leqqileqqK1 \\leqq i \\leqq K) には 22 つの整数 Ai,BiA_i, B_i (1leqqAileqqN1 \\leqq A_i \\leqq N1leqqBileqq31 \\leqq B_i \\leqq 3) が空白を区切りとして書かれている.これは,AiA_i 日目のパスタはすでに決まっており,Bi=1B_i = 1 のときはトマトソースであり,Bi=2B_i = 2 のときはクリームソースであり,Bi=3B_i = 3 のときはバジルソースであることを表す.AiA_i (1leqqileqqK1 \\leqq i \\leqq K) は全て異なる.与えられる入力データにおいて,条件をみたす予定は 11 通り以上あることが保証されている.

出力

条件をみたす予定が何通りあるかを 10,00010\\,000 で割った余りを 11 行で出力せよ.


入力例 1

5 3
3 1
1 1
4 2

出力例 1

6

入出力例 11 において,あなたは 55 日間の予定を考える.11 日目と 33 日目はトマトソースであり,44 日目はクリームソースである.また,33 日以上連続して同じパスタを選んではいけない.これらの条件をみたす予定は 66 通りある.

2012-yo-t4-fig01.png

この表では,11 はトマトソースを,22 はクリームソースを,33 はバジルソースを表す.


入力例 2

20 5
10 2
4 3
12 1
13 2
9 1

出力例 2

2640

入出力例 22 において,条件をみたす予定は全部で 4,112,6404\\,112\\,640 通りある.それを 10,00010\\,000 で割った余りである 2,6402\\,640 を出力する.