program DFS;
var v:array[0..100]of boolean;
a:array[0..100,0..100]of integer;
b:array[0..100]of integer;
i,r,j,k,n:integer;
procedure dfs(i:integer);
var j:integer;
begin
v[i]:=true;
b[k]:=i;inc(k);
for j:=1 to n-1 do
begin
if (not v[j])and(a[i,j]=1)then dfs(j);
end;
end;
{*******main*********}
begin
readln(n);
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;
k:=0;
for i:=0 to n-1 do
if not v[i] then dfs(i);
for i:=0 to n-1 do
begin
write(b[i],' ');
end;
writeln;
end.
/**************************************************************
Problem: 2159
User: admin
Language: Pascal
Result: Wrong Answer
****************************************************************/