#include <bits/stdc++.h>
using namespace std;
const int N = 100050;
set<pair<int, int> > v[N];
set<int> just[N];
int n, m;
bool check(int d1, int d2, int d3) {
  return (d1 == ((d2 - d3 <= 0) ? (-d2 - d3) : (d2 - d3)) ||
          d1 == ((d2 + d3 <= 0) ? (-d2 + d3) : (d2 + d3)));
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  cin >> n >> m;
  long long l, r, d;
  for (int i = 0; i < m; i++) {
    cin >> l >> r >> d;
    v[l].insert(make_pair(r, d));
    v[r].insert(make_pair(l, d));
  }
  int d1, d2, d3;
  bool b = true;
  for (int i = 1; i <= n; i++) {
    for (auto it1 : v[i]) {
      d1 = it1.second;
      for (auto it2 : v[it1.first]) {
        d2 = it2.second;
        auto iter = lower_bound((v[it2.first]).begin(), (v[it2.first]).end(),
                                make_pair(i, -1));
        if (iter != v[it2.first].end() && iter->first == i) {
          d3 = iter->second;
          b &= (check(d1, d2, d3) || check(d2, d1, d3) || check(d3, d1, d2));
        }
      }
    }
  }
  if (b)
    cout << "Yes" << (char)0x0A;
  else
    cout << "No" << (char)0x0A;
  return 0;
}
