import itertools import math import operator import functools Gx,Gy,K = map(int,input().split()) A = [] for k in range(K): x,y,N = map(int,input().split()) A.append([x,y,N]) B = [] for k,a in enumerate(A): b = [tuple(a[:-1] + [k]) for i in range(a[2])] B = B + b if Gx == Gy == 0: sumP = 1 else: sumP = 0 for i in range(1,len(B) + 1): C = set(itertools.combinations(B,i)) C = list(C) for k in range(len(C)): s = set([C[k][j][2] for j in range(i)]) Cx = sum([C[k][j][0] for j in range(i)]) Cy = sum([C[k][j][1] for j in range(i)]) if Cx == Gx and Cy == Gy: d = [] for s2 in s: d.append([C[k][j][2] for j in range(i)].count(s2)) p = math.factorial(i) // functools.reduce(operator.mul,([math.factorial(d[j]) for j in range(len(d))])) sumP = (sumP + p) % 1000000007 print(sumP)