#include <cstdio>//https://vijos.org/p/1540
#include <cstring>
#include <iostream>
using namespace Std;
int n,m;
int h[10000];
int father[10000];
int found (int);
void Show (void)
{
for (int i=1;i<=n;i++)
{
Found (i);
}
int minl=0x7f7f7f;
int count=0;
for (int i=1;i<=n;i++)
{
if (H[I]<MINL)
{
Minl=h[i];
count=i;
}
}
if (minl<0)
{
for (int i=1;i<=n;i++)
{
H[I]-=MINL;
printf ("%d\n", H[i]);
}
}
Else
for (int i=1;i<=n;i++)
{
printf ("%d\n", H[i]);
}
}
int found (int x)
{
if (father[x]==x) return x;
Else
{
int k=father[x];
Father[x]=found (Father[x]);
H[X]+=H[K];
return father[x];
}
}
void Add (int x,int y,int z)
{
H[father[y]]=h[x]+z-h[y];
FATHER[FATHER[Y]]=FATHER[X];
}
void Init ()
{
int x, y, Z;
scanf ("%d%d", &n,&m);
for (int i=1;i<=n;i++)
{
Father[i]=i;
h[i]=0;
}
for (int i=1;i<=m;i++)
{
scanf ("%d%d%d", &x,&y,&z);
if (found (x) ==found (y))
{
if (h[y]-h[x]!=z)
{
printf ("-1");
Return
}
}
Else
{
Add (x, y, z);
}
}
Show ();
}
int main ()
{
Init ();
return 0;
}
The Eye of the moon