I=10**18 n,m=gets.split.map &:to_i d=(1..n).map{[I*100]*n} n.times{|i|d[i][i]=0} m.times{s,t,c=gets.split.map &:to_i;d[s-1][t-1]=[d[s-1][t-1],c].min} n.times{|i|n.times{|j|n.times{|k|d[j][k]=[d[j][k],d[j][i]+d[i][k]].min}}} n.times{|i|p (0...n).sum{|j|d[i][j]