#include <bits/stdc++.h>
using namespace std;
int n, m;
vector<vector<pair<int, int>>> g;
vector<int> dist;
void dfs(int v, int d) {
  if (dist[v] != INT_MAX) return;
  dist[v] = d;
  for (int i = 0, i_len = (((int)(g[v]).size())); i < i_len; i++) {
    dfs(g[v][i].first, d + g[v][i].second);
  }
}
int main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
  cin >> n >> m;
  g.resize(n);
  dist.resize(n, INT_MAX);
  for (int i = 0, i_len = (m); i < i_len; i++) {
    int l, r, d;
    cin >> l >> r >> d;
    l--;
    r--;
    g[l].emplace_back(r, d);
    g[r].emplace_back(l, -1 * d);
  }
  dfs(0, 0);
  for (int i = 0, i_len = (n); i < i_len; i++) {
    for (int ii = 0, ii_len = (((int)(g[i]).size())); ii < ii_len; ii++) {
      if ((dist[i] + g[i][ii].second) != dist[g[i][ii].first]) {
        cout << "No" << endl;
        return 0;
      }
    }
  }
  cout << "Yes" << endl;
  return 0;
}
