#include <iostream>
#include <queue>
using namespace std;
bool G[102][102];
int find(int start, int end, int N)
{
bool visited[102] = { 0 };
queue<int> q;
q.push(start);
int next;
int now = q.front();
while (!q.empty())
{
now = q.front();
q.pop();
for (int i = 1; i <= N; i++)
{
if (visited[end]) return visited[end];
if (G[now][i] & !visited[i])
{
next = i;
q.push(next);
visited[next] = 1;
}
}
}
return 0;
}
void input_G(int N)
{
for (int i = 1; i <= N; i++)
for (int j = 1; j <= N; j++)
cin >> G[i][j];
}
int main()
{
int N;
cin >> N;
input_G(N);
for (int i = 1; i <= N; i++)
{
for (int j = 1; j <= N; j++)
cout << find(i, j, N) << ' ';
cout << endl;
}
//system("pause");
}