#include<bits/stdc++.h>
#define f(i,n) for (int i=0;i<(n);i++)
#define f1(i,n) for (int i=1;i<=(n);i++)
#define pb push_back
#define ms(a) memset((a),0,sizeof(a))
#define ll long long
#define vi vector<int>
#define mp make_pair
#define die assert(fasle)
using namespace std;
int n,m,l,r,d,mark[200005];
bool yes=true;
int main() {
	scanf("%d%d",&n,&m);
	f(i,m) {
		scanf("%d%d%d",&l,&r,&d);
		if (mark[l]!=0 && mark[r]==0) {
		//	cout<<1<<endl;
			mark[r]=mark[l]+d;
		} else if (mark[l]==0 && mark[r]!=0) {
		//	cout<<2<<endl;
			mark[l]=mark[r]-d;
		} else if (mark[l]==0 && mark[r]==0) {
		//	cout<<3<<endl;
			mark[l]=1;
			mark[r]=mark[l]+d;
		} else if (mark[l]!=0 && mark[r]!=0) {
		//	cout<<4<<endl;
			if(mark[l]==mark[r]-d);
			else {
				printf("No");
				return 0;
			}
		}
		//f1(i,n) {
			//if (mark[i]) 
			//cout<<i<<' '<<mark[i]<<endl;
		//}
		//cout<<endl;
	}

	printf("Yes");
	return 0;
}
