#include<stdio.h>
#include<algorithm>
#include<vector>
using namespace std;
int R, C, n;
long long G[201000], M1, M2;
vector<int>E[201000], L[201000];
bool v[201000];
void DFS(int a, long long g){
    int i;
    v[a] = true;
    G[a] = g;
    if(a<=R)M1=min(M1,g);
    else M2=min(M2,g);
    for(i=0;i<E[a].size();i++){
        if(!v[E[a][i]])DFS(E[a][i], L[a][i]-g);
    }
}
int main(){
    int i, x, y, c, j;
    scanf("%d%d%d",&R,&C,&n);
    for(i=1;i<=n;i++){
        scanf("%d%d%d",&x,&y,&c);
        E[x].push_back(y+R);L[x].push_back(c);
        E[y+R].push_back(x);L[y+R].push_back(c);
    }
    for(i=1;i<=R+C;i++){
        M1 = M2 = 1e9;
        if(!v[i]){
            DFS(i,0);
        }
        if(M1+M2<0){
            printf("No\n");
            return 0;
        }
    }
    for(i=1;i<=R;i++){
        for(j=0;j<E[i].size();j++){
            if(G[i] + G[E[i][j]] != L[i][j]){
                printf("No\n");
                return 0;
            }
        }
    }
    printf("Yes\n");
}