#include <cstdio>
#include <cstdlib>
#include <algorithm>
#define N 200010
using namespace std;
typedef long long ll;
struct node
{
	int from,to,next;ll value;
}e[N];
int tot,st[N],vis[N];
int n,m,r,c,x,y;ll z,min1,min2,val[N];
void cut()
{
	puts("No");
	exit(0);
}
void add(int x,int y,ll z)
{
	e[++tot].to=y;
	e[tot].from=x;
	e[tot].value=z;
	e[tot].next=st[x];
	st[x]=tot;
}
void dfs(int now,ll p)
{
	if (vis[now])
	{
		if (p!=val[now])
			cut();
		return;
	}
	val[now]=p,vis[now]=1;
	if (now>=r)
		min2=min(min2,(ll)val[now]);
	else
		min1=min(min1,(ll)val[now]);
	for (int i=st[now];i;i=e[i].next)
		dfs(e[i].to,e[i].value-val[now]);
}
int main()
{
	scanf("%d%d%d",&r,&c,&n);
	for (int i=1;i<=n;i++)
	{
		scanf("%d%d%lld",&x,&y,&z);x--,y--;
		add(x,y+r,z),add(y+r,x,z);
	}
	for (int i=0;i<r+c;i++)
		if (!vis[i])
		{
			min1=min2=1e18+10;
			dfs(i,0);
			if (min1+min2<0)
				cut();
		}
	puts("Yes");
}