Gx,Gy,K = map(int,input().split()) E = [list(map(int,input().split())) for _ in range(K)] MOD = 10**9+7 N = 0 for i in range(K): N += E[i][2] A = [1]*(N+1) for i in range(1,N+1): A[i] = (A[i-1]*i)%MOD B = [1]*(N+1) B[N] = pow(A[N],MOD-2,MOD) for i in range(N-1,0,-1): B[i] = (B[i+1]*(i+1))%MOD def dfs(i,C): global ans if i==K-1: for ni in range(E[K-1][2]+1): C.append(ni) x = 0 y = 0 n = 0 for j in range(K): x += C[j]*E[j][0] y += C[j]*E[j][1] n += C[j] if x==Gx and y==Gy: tot = A[n] for j in range(K): tot = (tot*B[C[j]])%MOD ans = (ans+tot)%MOD C.pop() else: for ni in range(E[i][2]+1): C.append(ni) dfs(i+1,C) C.pop() ans = 0 dfs(0,[]) print(ans)