const fi = ''; fo = ''; maxn = 500; var n:longint; a: array[1..maxn,1..maxn] of boolean; l,r: array[1..maxn] of longint; procedure enter; var i,j,k,p:longint; begin readln(n); for i:=1 to n do begin for j:=1 to n do begin read(p); a[i,j]:=(p=1); if a[i,j] then inc(l[i]); end; readln; end; for i:=1 to n do for j:=1 to n do for k:=1 to n do if not a[i,j] and a[i,k] and a[k,j] then begin a[i,j]:=true; inc(l[i]); end; end; procedure solve; var i,j:longint; res:longint; begin res:=0; for i:=1 to n do if l[i]=n then begin inc(res); r[res]:=i; end; writeln(res); for i:=1 to res do writeln(r[i]); end; begin assign(input,fi); reset(input); assign(output,fo); rewrite(output); enter; solve; close(input); close(output); end.