import java.util.Scanner;
public class Main {
private static Scanner s = new Scanner(System.in) ;
public static void main(String[] args) {
int n = s.nextInt() ;
int a[][] = new int[n][n] ;
boolean visited[] = new boolean[n] ;
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a.length; j++) {
a[i][j] = s.nextInt() ;
}
}
for (int i = 0; i < visited.length; i++) {
a[i][i] = 1 ;
}
Graph g = init(a ,visited) ;
deptSearch(g, 0) ;
System.out.println() ;
}
public static Graph init(int a[][] , boolean visited[]){
Graph g = new Graph(a.length) ;
g.visited = visited ;
g.a = a ;
return g ;
}
public static void deptSearch(Graph g,int x){
for (int i = 0; i < g.n; i++) {
if(g.a[x][i] ==1&&g.visited[i]==false){
g.visited[i] = true ;
visit(i) ;
deptSearch(g, i) ;
}
}
}
public static void visit(int i){
System.out.print(i+" ");
}
}
class Graph{
int n ;
int a[][] = new int [n][n] ;
boolean visited[] = new boolean[n] ;
public Graph(int n) {
this.n = n ;
}
}
/**************************************************************
Problem: 2159
User: admin
Language: Java
Result: Accepted
Time:835 ms
Memory:46076 kb
****************************************************************/