program BFS;
var a:array[0..1000,0..1000]of integer;
    i,j,k,n,s:integer;
    v:array[0..1000]of boolean;
    b:array[0..1000]of integer;
    front,tail:integer;
procedure bfs(x:integer);
var j:integer;
begin
  v[i]:=true;
  b[tail]:=x;
  while front<=tail do
    begin
      for j:=0 to n-1 do
        if (a[b[front],j]=1)and(v[j]=false)then
          begin
            inc(tail);
            v[j]:=true;
            b[tail]:=j;
          end;
      inc(front);
    end;
end;
{*********main*********}
begin
  readln(n);front:=1;
  fillchar(v,sizeof(v),false);
  for i:=0 to n-1 do
    for j:=0 to n-1 do
      begin
        read(a[i,j]);
      end;
  for i:=0 to n-1 do
    if not v[i] then begin tail:=front;bfs(i);end;
  for i:=1 to n do
    write(b[i],' ');
  writeln;
end.
/**************************************************************
	Problem: 2160
	User: admin
	Language: Pascal
	Result: Wrong Answer
****************************************************************/