<?php

fscanf(STDIN,"%d %d",$N, $M);

$L = [];
$R = [];
$D = [];
$F = [];

for($i= 1; $i<= $M; $i++){
  $arr = explode(" ",trim(fgets(STDIN)));
  list($L[$i],$R[$i],$D[$i]) = $arr;
  $F[$i] = false; //論理演算をしたかどうかの判定
}

$X = [];

//初期値をセットする
$X[$L[1]] = 0;
$X[$R[1]] = $x[L[1]]+$D[1];

$result = true;

for($i=1;$i<=$M;$i++){
  if(isset($X[$L[$i]]) && isset($X[$R[$i]])){
    if($X[$L[$i]] + $D[$i] != $X[$R[$i]]){
      $result = false;
      break;
    }
    $F[$i] =true;
  }elseif(isset($X[$L[$i]])){
    $X[$R[$i]] = $X[$L[$i]]+$D[$i];
    $F[$i]=true;
  }elseif(isset($X[$R[$i]])){
    $X[$L[$i]] = $X[$R[$i]]-$D[$i];
    $F[$i]=true;
  }else{
    $F[$i] = false;
  }
}

$keys = array_keys(array_filter($F,"getFalse"));

while(count($keys) > 0){
  foreach($keys as $i){
   if(isset($X[$L[$i]]) && isset($X[$R[$i]])){
    if($X[$L[$i]]+$X[R[$i]] != $D[$i]){
      $result = false;
      break;
    }
    $F[$i]=true;
   }elseif(isset($X[$L[$i]])){
    $X[$R[$i]] = $X[$L[$i]]+$D[$i];
    $F[$i]=true;
   }elseif(isset($X[$R[$i]])){
    $X[$L[$i]] = $X[$R[$i]]-$D[$i];
    $F[$i]=true;
   }
  }
  if(!$result){
    break;
  }
  $keys = array_keys(array_filter($F,"getFalse"));
}

echo ($result)? "Yes":"No";

function getFalse($elem){
  return $elem == false;
}

