#include #define ll long long #define MOD 1000000007ll using namespace std; int f(int k) { if (k >= 9) return 19-k; return k+1; } int main() { int n, k, m; cin >> n >> k >> m; vector> mapa(n, vector(2, -1)); for (int i = 0; i < m; i++) { int c, r, v; cin >> c >> r >> v; mapa[c][r] = v; } ll ans = 0; for (int sum1 = 0; sum1 <= 18; sum1++) for (int sum2 = 0; sum2 <= 18; sum2++) { int d1 = (mapa[0][0]==-1 ? 0 : mapa[0][0]) + (mapa[0][1]==-1 ? 0 : mapa[0][1]); int h1 = (mapa[0][0]==-1 ? 9 : mapa[0][0]) + (mapa[0][1]==-1 ? 9 : mapa[0][1]); if (sum1 < d1 || sum1 > h1) continue; int d2 = (mapa[1][0]==-1 ? 0 : mapa[1][0]) + (mapa[1][1]==-1 ? 0 : mapa[1][1]); int h2 = (mapa[1][0]==-1 ? 9 : mapa[1][0]) + (mapa[1][1]==-1 ? 9 : mapa[1][1]); if (sum2 < d2 || sum2 > h2) continue; ll pocet = 1; int a = sum1, b = sum2, c = k-sum1-sum2; if (mapa[0][0] == -1 && mapa[0][1] == -1) pocet *= f(a); if (mapa[1][0] == -1 && mapa[1][1] == -1) pocet *= f(b); for (int i = 2; i < n; i++) { int d = (mapa[i][0]==-1 ? 0 : mapa[i][0]) + (mapa[i][1]==-1 ? 0 : mapa[i][1]); int h = (mapa[i][0]==-1 ? 9 : mapa[i][0]) + (mapa[i][1]==-1 ? 9 : mapa[i][1]); if (c < d || c > h) goto koniec; //cout << a << b << c << endl; if (mapa[i][0] == -1 && mapa[i][1] == -1) pocet = (pocet * f(c)) % MOD; //cout << pocet << endl; int dd = a; a = b; b = c; c = dd; } ans = (ans+pocet) % MOD; koniec:; } cout << ans << endl; }