#include <iostream>
#include <vector>
using namespace std;
void show_matrix(const matrix_type& adjacency_matrix)
{
for (const auto& line: adjacency_matrix)
{
for (const auto& el: line)
{
std::cout << el << " ";
}
std::cout << std::endl;
}
}
void flyod(matrix_type& adjacency_matrix)
{
for (us k = 0; k < adjacency_matrix.size(); ++k)
{
for (us i = 0; i < adjacency_matrix.size(); ++i)
{
for (us j = 0; j < adjacency_matrix.size(); ++j)
{
if(adjacency_matrix[i][j] > adjacency_matrix[i][k] + adjacency_matrix[k][j])
{
adjacency_matrix[i][j] = adjacency_matrix[i][k] + adjacency_matrix[k][j];
}
}
}
}
// std::cout << "k = " << k + 1 << std::endl;
// show_matrix(adjacency_matrix);
// std::cout << std::endl;
}
}
void read_matrix(matrix_type& adjacency_matrix)
{
for (us i = 0; i < adjacency_matrix.size(); ++i)
{
for (us j = 0; j < adjacency_matrix.size(); ++j)
{
std::cin >> adjacency_matrix[i][j];
}
}
}
int main()
{
us N;
std::cin >> N;
matrix_type adjacency_matrix(N, std::vector<short>(N));
read_matrix(adjacency_matrix);
Floyd(adjacency_matrix);
show_matrix(adjacency_matrix);
return 0;
}