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
****************************************************************/