#include <bits/stdc++.h>
using namespace std;
int const maxn = 1e6 + 10;
struct bkn {
  int next, to;
  long long w;
} e[maxn * 2];
int tot = 1, head[maxn];
long long dp[maxn];
int n, m;
void add(int x, int y, long long w) {
  e[tot].to = y, e[tot].next = head[x], e[tot].w = w, head[x] = tot++;
}
void dfs(int x) {
  for (int i = head[x]; i; i = e[i].next) {
    int y = e[i].to;
    long long v = e[i].w;
    if (!dp[y]) {
      dp[y] = dp[x] + v;
      dfs(y);
    } else if (dp[y] != dp[x] + v) {
      cout << "No" << endl;
      exit(0);
    }
  }
}
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= m; i++) {
    int x, y, w;
    scanf("%d%d%d", &x, &y, &w);
    add(x, y, w);
  }
  for (int i = 1; i <= n; i++) {
    if (!dp[i]) dfs(i);
  }
  cout << "Yes" << endl;
}
