#include<iostream>
#include<cstdio>
#include<cstring>

namespace fuck
{
	const int N=101000,M=N*4;
	int begin[N],next[M],to[M],w[M];
	int n,m,e;
	void add(int x,int y,int z,bool k=1)
	{
		to[++e]=y;
		next[e]=begin[x];
		begin[x]=e;
		w[e]=z;
		if(k)add(y,x,-z,0);
	}
	void initialize()
	{
		scanf("%d%d",&n,&m);
		for(int i=1,u,v,k;i<=m;i++)
		{
			scanf("%d%d%d",&u,&v,&k);
			add(u,v,k);
		}
	}

	bool vis[N];
	int f[N];

	bool dfs(int p,int x)
	{
		if(vis[p])return f[p]==x;

		vis[p]=1,f[p]=x;

		for(int i=begin[p];i;i=next[i])
			if(!dfs(to[i],x+w[i]))return 0;
		return 1;
	}

	bool judge()
	{
		for(int i=1;i<=n;i++)
			if(!vis[i] && !dfs(i,0))
				return 0;
		return 1;
	}

	void solve()
	{
		initialize();
		printf("%s\n",judge()?"Yes":"No");
	}
}

int main()
{
	fuck::solve();
	return 0;
}
