gx,gy,n=map(int,input().split()) b=[] k=[0]*n for i in range(n): x,y,k[i]=map(int,input().split()) b+=[(x,y)] M=10**9+7 N=100 fa=[1] for i in range(1,N+1): fa+=[fa[-1]*i%M] fb=[pow(fa[N],M-2,M)] for i in reversed(range(1,N+1)): fb+=[fb[-1]*i%M] fb.reverse() a=0 q=[] def f(): global a if len(q)==n: px,py=0,0 for i in range(n): x,y=b[i] px+=x*q[i] py+=y*q[i] if (px,py)==(gx,gy): da=fa[sum(q)] for i in range(n): da*=fb[q[i]] da%=M a+=da a%=M return for i in range(k[len(q)]+1): q.append(i) f() q.pop() return f() print(a)