#include "bits/stdc++.h"

using namespace std;

const long long int MOD=1000000007;

int main(){
  int H,W,N;
  cin>>H>>W>>N;
  vector<vector<pair<int,long long int>>>wv(W);
  vector<vector<pair<int,long long int>>>hv(H);
  vector<long long int>wmin(W,MOD*MOD);
  vector<long long int>hmin(H,MOD*MOD);
  vector<map<int,long long int>>wedge(W);
  vector<map<int,long long int>>hedge(H);
  for(int i=0;i<N;i++){
    long long int a,b,c;
    cin>>a>>b>>c;
    a--;
    b--;
    hv[a].emplace_back(b,c);
    wv[b].emplace_back(a,c);
    hmin[a]=min(hmin[a],c);
    wmin[b]=min(wmin[b],c);
  }
  for(int i=0;i<H;i++){
    if(hv[i].size()<2)continue;
    for(int j=1;j<hv[i].size();j++){
      auto it=wedge[hv[i][j].first].find(hv[i][j-1].first);
      if(it!=wedge[hv[i][j].first].end()&&it->second!=hv[i][j-1].second-hv[i][j].second){
        cout<<"No\n";
        return 0;
      }
      wedge[hv[i][j].first][hv[i][j-1].first]=hv[i][j-1].second-hv[i][j].second;
      wedge[hv[i][j-1].first][hv[i][j].first]=hv[i][j].second-hv[i][j-1].second;
    }
  }
  for(int i=0;i<W;i++){
    if(wv[i].size()<2)continue;
    for(int j=1;j<wv[i].size();j++){
      auto it=hedge[wv[i][j].first].find(wv[i][j-1].first);
      if(it!=hedge[wv[i][j].first].end()&&it->second!=wv[i][j-1].second-wv[i][j].second){
        cout<<"No\n";
        return 0;
      }
      hedge[wv[i][j].first][wv[i][j-1].first]=wv[i][j-1].second-wv[i][j].second;
      hedge[wv[i][j-1].first][wv[i][j].first]=wv[i][j].second-wv[i][j-1].second;
    }
  }
 // assert(0);
  vector<int>hused(H);
  vector<int>wused(W);
  vector<pair<int,long long int>>hdif(H,make_pair(-1,MOD*MOD));
  vector<pair<int,long long int>>wdif(W,make_pair(-1,MOD*MOD));
  for(int i=0;i<H;i++){
    if(hused[i])continue;
    queue<int>Q;
    Q.push(i);
    hdif[i]={i,0};
    while(!Q.empty()){
      int cn=Q.front();
      //cerr<<cn<<"\n";
      Q.pop();
      hmin[i]=min(hmin[i],hmin[cn]-hdif[cn].second);
      for(auto j:hedge[cn]){
        //cerr<<"edge "<<j.first<<" "<<j.second<<"\n";
        if(hdif[j.first].first==-1){
          hdif[j.first]={i,hdif[cn].second+j.second};
        }
        else{
          if(hdif[j.first].second!=hdif[cn].second+j.second){
            cout<<"No\n";
            return 0;
          }
        }
        if(hused[j.first])continue;
        hused[j.first]=1;
        Q.push(j.first);
      }
    }
  }
  //assert(0);
  for(int i=0;i<W;i++){
    if(wused[i])continue;
    queue<int>Q;
    Q.push(i);
    wdif[i]={i,0};
    while(!Q.empty()){
      int cn=Q.front();
      Q.pop();
      wmin[i]=min(wmin[i],wmin[cn]-wdif[cn].second);
      for(auto j:wedge[cn]){
        if(wdif[j.first].first==-1){
          wdif[j.first]={i,wdif[cn].second+j.second};
        }
        else{
          if(wdif[j.first].second!=wdif[cn].second+j.second){
            cout<<"No\n";
            return 0;
          }
        }
        if(wused[j.first])continue;
        wused[j.first]=1;
        Q.push(j.first);
      }
    }
  }
  //assert(0);
  for(int i=0;i<H;i++){
    if(hdif[i].first==-1)continue;
    if(hmin[hdif[i].first]+hdif[i].second<0){
      cout<<"No\n";
      return 0;
    }
  }
  for(int i=0;i<W;i++){
    if(wdif[i].first==-1)continue;
    if(wmin[wdif[i].first]+wdif[i].second<0){
      cout<<"No\n";
      return 0;
    }
  }
  cout<<"Yes\n";
}

Measured memory_bytes: 37504