#include <cstdio>
#include <iostream>
#include <cstring>
#define maxn 2000005
using namespace std;
int Far[maxn],dis[maxn];
void inti(int n){
    for(int i=0;i<=n;i++){
        Far[i]=i;
        dis[i]=0;
    }
}
int find_F(int x){
    if(Far[x]==x) return x;
    int tmp=Far[x];
    Far[x]=find_F(Far[x]);
    dis[x]+=dis[tmp];
    return Far[x];
}
int find_D(int x){
    if(Far[x]==x) return 0;
    else return find_D(Far[x])+dis[x];
}
int main()
{
    int n,m;
    scanf("%d%d",&n,&m);
    inti(n);
    for(int i=0;i<m;i++){
        int a,b,c;
        scanf("%d%d%d",&a,&b,&c);
        int Fa=find_F(a);
        int Fb=find_F(b);
        if(Fa==Fb){
            if(dis[b]-dis[a]!=c){
                puts("No");
                return 0;
            }
        }
        else{
            Far[b]=a;
            dis[b]=find_D(b)-find_D(a)+c;
        }
    }
    puts("Yes");
}
