#include #include #include #define int long long #define min(a,b) ((a) < (b)? (a):(b)) #define MOD 1'000'000'007 using namespace std; signed main() { ios_base::sync_with_stdio(0); int n, k ,m; cin >> n >> k >> m; vector cols = vector(2*n); for(int i = 0; i < 2 * n; ++i) { cols[i] = -1; } for(int i = 0; i < m; ++i) { int c , r,v; cin >> c >> r >>v; cols[2*c+r]=v; } int s = 0; for(int a = 0; a < min(k+1, 19); ++a) { for(int b = 0; b < min(k+1-a, 19); ++b) { int c = k - a - b; if(c > 18) continue; int t[3]; t[0] = a; t[1]=b; t[2]=c; int p = 1; for(int i = 0; i < n; ++i) { int x = cols[2*i]; int y = cols[2*i+1]; int cs = t[i%3]; if(x == -1 && y == -1) { p *= min(1+cs, 19-cs); p %= MOD; } else if(x != -1 && y != -1 && cs != x + y) { p = 0; break; } else { int z = x == -1 ? y : x; if(!(z <= cs && cs <= z+9)) { p = 0; break; } } } s += p; s %= MOD; } } cout << s << endl; return 0; }