rt
#include<bits/stdc++.h>
using namespace std;
#define ljl long long
#define pii pair<ljl,ljl>
const ljl N=3e3+5,M=6e3+5,inf=1e18;
ljl n,m,head[N],cnt_e,dis[N];
ljl cnt[N],h[N];
bool vis[N];
queue<ljl> q;
priority_queue<pii,vector<pii >,greater<pii > > heap;
struct E{
ljl to,w,pre;
}e[M];
void add(ljl from,ljl to,ljl w)
{
e[++cnt_e].to=to;
e[cnt_e].w=w;
e[cnt_e].pre=head[from];
head[from]=cnt_e;
return;
}
bool spfa()
{
memset(vis,0,sizeof(vis));
q.push(0);
vis[0]=1;
for(ljl i=1;i<=n;++i)
h[i]=inf;
while(!q.empty())
{
ljl u=q.front();q.pop();
vis[u]=0;
for(ljl i=head[u];i;i=e[i].pre)
{
ljl v=e[i].to,w=e[i].w;
if(h[v]>h[u]+w)
{
h[v]=h[u]+w;
if(!vis[v])
{
q.push(v);vis[v]=1;
cnt[v]=cnt[u]+1;
if(cnt[v]>n)
return 0;
}
}
}
}
return 1;
}
void dijk(ljl s)
{
while(!heap.empty())heap.pop();
memset(vis,0,sizeof(vis));
for(ljl i=1;i<=n;++i)
dis[i]=inf;
dis[s]=0;
heap.push({dis[s],s});
while(!heap.empty())
{
auto u=heap.top().second;heap.pop();
if(vis[u]) continue;
vis[u]=1;
for(ljl i=head[u];i;i=e[i].pre)
{
ljl v=e[i].to,w=e[i].w;
if(dis[v]>dis[u]+w)
{
dis[v]=dis[u]+w;
if(!vis[v])
heap.push({dis[v],v});
}
}
}
return;
}
int main(){
ios::sync_with_stdio(0);
cin>>n>>m;
for(ljl i=1,u,v,w;i<=m;++i)
{
cin>>u>>v>>w;
add(u,v,w);
}
for(ljl i=1;i<=n;++i)
add(0,i,0);
if(!spfa())
{
cout<<"-1\n";return 0;
}
for(ljl i=1;i<=n;++i)
for(ljl j=head[i];j;j=e[j].pre)
e[j].w=e[j].w+h[i]-h[e[j].to];
for(ljl i=1;i<=n;++i)
{
dijk(i);
ljl ans=0;
for(ljl j=1;j<=n;++j)
{
if(dis[j]==inf)
ans=ans+j*1000000000;
else
ans=ans+j*(dis[j]-h[i]+h[j]);
}
cout<<ans<<'\n';
}
return 0;
}