#include<bits/stdc++.h>
using namespace std;
int long long n,m,u,v,w,a[1001][1001],mp[1001][1001];
int main(){
scanf("%lld%lld",&n,&m);
for(int i=1;i<=m;i++){
scanf("%lld%lld%lld",&u,&v,&w);
a[u][v]=w;
a[v][u]=w;
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(i!=j and a[i][j]==0){
a[i][j]=INT_MAX;
}
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
mp[i][j]=INT_MAX;
for(int k=1;k<=n;k++){
mp[i][j]=min(mp[i][j],a[i][k]+a[k][j]);
mp[j][i]=mp[i][j];
}
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
printf("%lld ",mp[i][j]);
}
printf("\n");
}
}