#include <stdio.h>
#include <string.h>
#define maxn 51
int isvisited[maxn],mat[maxn][maxn],n;
void bfs(int vo){
	int i;
	printf("%d ",vo);
	isvisited[vo]=1;
	for (i=0;i<n;i++)
	{
		if (isvisited[i]==0&&mat[vo][i]==1)
		{
			bfs(i);
		}
	}
}
int main(){
	int i,j;
//	freopen("1.txt","r",stdin);
	while (scanf("%d",&n)!=EOF)
	{
		for (i=0;i<n;i++)
		{
			for (j=0;j<n;j++)
			{
				scanf("%d",&mat[i][j]);
			}
		}
		memset(isvisited,0,sizeof(isvisited));
		for (i=0;i<n;i++)
		{
			if (isvisited[i]==0)
			{
				bfs(i);
				printf("\n");
			}
		}
	}
//	fclose(stdin);
	return 0;
}
/**************************************************************
	Problem: 2161
	User: admin
	Language: C
	Result: Accepted
	Time:16 ms
	Memory:1156 kb
****************************************************************/