#include<bits/stdc++.h>
using namespace std;

#define int long long
typedef vector<int>vint;
typedef pair<int,int>pint;
typedef vector<pint>vpint;
#define rep(i,n) for(int i=0;i<(n);i++)
#define reps(i,f,n) for(int i=(f);i<(n);i++)
#define all(v) (v).begin(),(v).end()
#define each(it,v) for(__typeof((v).begin()) it=(v).begin();it!=(v).end();it++)
#define pb push_back
#define fi first
#define se second
template<typename A,typename B>inline void chmin(A &a,B b){if(a>b)a=b;}
template<typename A,typename B>inline void chmax(A &a,B b){if(a<b)a=b;}

int H,W,N;
int x[100000],y[100000],v[100000];

vpint lis[100000];

int par[100000],sz[100000],dif[100000],mi[100000];
vint mem[100000];

void init(){
    rep(i,W){
        par[i]=i;
        sz[i]=1;
        dif[i]=0;
        mi[i]=0;
        mem[i].clear();
        mem[i].pb(i);
    }
}

int find(int x){
    return x==par[x]?x:par[x]=find(par[x]);
}

bool unite(int x,int xx,int h,int hh){
    int y=find(x);
    int yy=find(xx);

    if(y==yy){
        int tmp=dif[xx]-dif[x];
        return tmp==hh-h;
    }

    if(sz[y]<sz[yy]){
        swap(y,yy);
        swap(x,xx);
        swap(h,hh);
    }

    int tmp=dif[xx]-dif[x]-(hh-h);
    for(auto u:mem[yy]){
        dif[u]-=tmp;
        chmin(mi[y],dif[u]);
        mem[y].pb(u);
    }
    sz[y]+=sz[yy];
    par[yy]=y;

    return true;
}

bool f(){
    rep(i,H)lis[i].clear();
    rep(i,N){
        lis[y[i]].pb(pint(x[i],i));
    }
    rep(i,H)sort(all(lis[i]));
    init();

    rep(i,H){
        for(int j=0;j+1<lis[i].size();j++){
            int x=lis[i][j].fi;
            int xx=lis[i][j+1].fi;
            int k=lis[i][j].se;
            int kk=lis[i][j+1].se;
            if(!unite(x,xx,v[k],v[kk]))return false;
        }
    }

    rep(i,N){
        int p=find(x[i]);
        int tmp=v[i]-dif[x[i]]+mi[p];
        if(tmp<0)return false;
    }
    return true;
}

signed main(){
    cin>>H>>W>>N;
    rep(i,N)cin>>y[i]>>x[i]>>v[i],x[i]--,y[i]--;

    bool ok=true;
    rep(t,2){
        ok&=f();
        swap(H,W);
        rep(i,N)swap(x[i],y[i]);
    }
    if(ok)cout<<"Yes"<<endl;
    else cout<<"No"<<endl;
    return 0;
}
