#include <bits/stdc++.h>
using namespace std;
const int INF = 1 << 30;
const long long int MOD = long long int(1e9 + 7);
int parent[100000 + 1];
long long int d[100000 + 1];
int root(int num) {
  if (parent[num] == num) return num;
  int p = root(parent[num]);
  d[num] += d[p];
  return parent[num] = p;
}
bool same(int l, int r) { return root(l) == root(r); }
void unite(int l, int r, long long int dis) {
  dis += d[l] - d[r];
  l = root(l);
  r = root(r);
  parent[r] = l;
  d[r] = dis;
}
int main() {
  int n, m;
  cin >> n >> m;
  for (int i = 0; i < n; i++) {
    parent[i] = i;
    d[i] = 0LL;
  }
  bool ans = true;
  for (int i = 0; i < m; i++) {
    int l, r;
    long long int dis;
    cin >> l >> r >> dis;
    l--;
    r--;
    if (same(l, r)) {
      if (dis != d[r] - d[l]) {
        ans = false;
      }
    } else {
      unite(l, r, dis);
    }
  }
  cout << (ans ? "Yes" : "No") << endl;
}
