#include <bits/stdc++.h>
using namespace std;
struct ver {
  int l, r, d;
};
vector<ver> v;
int viz[100010], n, m, l, r, d;
int main() {
  cin >> n >> m;
  if (m > 0) {
    cin >> l >> r >> d;
  }
  viz[l] = 1;
  viz[r] = 1 + d;
  for (int i = 1; i < m; i++) {
    cin >> l >> r >> d;
    if (viz[l]) {
      if (viz[r] == 0) {
        viz[r] = viz[l] + d;
      } else if (viz[r] != viz[l] + d) {
        cout << "No";
        return 0;
      }
    } else {
      if (viz[r]) {
        viz[l] = viz[r] - d;
      } else {
        struct ver check;
        check.l = l;
        check.r = r;
        check.d = d;
        v.push_back(check);
      }
    }
  }
  for (int i = 0; i < v.size(); i++) {
    if (viz[v[i].r] != viz[v[i].l] + v[i].d &&
        (viz[v[i].r] != 0 && viz[v[i].l] != 0)) {
      cout << "No";
      return 0;
    }
  }
  cout << "Yes";
  return 0;
}
