#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
const int oo=100193081;
using namespace std;
int f[1001][1001];
int main(){
int i,j,k,m,n,b,e,d,ans;
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(i==j)f[i][j]=0;
else f[i][j]=oo;
for(i=1;i<=m;i++){
scanf("%d%d%d",&b,&e,&d);
f[b][e]=d;
f[e][b]=d;
}
for(k=1;k<=n;k++)
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(f[i][j]>f[i][k]+f[k][j])
f[i][j]=f[i][k]+f[k][j];
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
printf("%d\n",f[i][j]);
return 0;
}
#include<cstdio>
#include<cstdlib>
#include<cstring>
const int oo=100193081;
using namespace std;
int f[1001][1001];
int main(){
int i,j,k,m,n,b,e,d,ans;
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(i==j)f[i][j]=0;
else f[i][j]=oo;
for(i=1;i<=m;i++){
scanf("%d%d%d",&b,&e,&d);
f[b][e]=d;
f[e][b]=d;
}
for(k=1;k<=n;k++)
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(f[i][j]>f[i][k]+f[k][j])
f[i][j]=f[i][k]+f[k][j];
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
printf("%d\n",f[i][j]);
return 0;
}