#define rep(i,n) for(int i=0;i<(int)(n);i++) #define ALL(v) v.begin(),v.end() typedef long long ll; #include using namespace std; const int MAX=110; const ll INF=1e18; ll dis[MAX][MAX]; int n,m; void floyd(){ rep(k,n){ rep(i,n){ if(dis[i][k]==INF) continue; rep(j,n){ if(dis[k][j]==INF) continue; dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]); } } } } int main(){ cin>>n>>m; rep(i,n){ rep(j,n){ if(i==j) dis[i][j]=0; else dis[i][j]=INF; } } ll s,t,d; rep(i,m){ cin>>s>>t>>d; s--,t--; dis[s][t]=d; } floyd(); rep(i,n){ ll ans=0; rep(j,n){ if(dis[i][j]==INF) continue; ans+=dis[i][j]; } cout<