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