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