// TOPOSORT by muoii
// https://v...content-available-to-author-only...j.com/problems/NKLEAGUE/
#include <bits/stdc++.h>
using namespace std;
#define tag "main"
#define maxn 1007
#define oo 1000000007LL
#define mid ((l+r)>>1)
#define getbit(x,i) ((x)>>(i)&1)
#define onbit(x,i) ((x)|(1<<(i)))
#define offbit(x,i) ((x)&~(1<<(i)))
#define cntbit(x) (__builtin_popcountll(x))
#define meset(a,x) memset(a,x,sizeof(a))
#define forinc(i,a,b) for(int i=a;i<=b;i++)
#define fordec(i,a,b) for(int i=a;i>=b;i--)
#define debug(x) cerr<<#x<<" = "<<x<<"\n"
#define runtime(stime) ((clock() - stime) / CLOCKS_PER_SEC * 1000)
#define checkfile(FiLeNaMe) { if(fopen(FiLeNaMe".inp","r")) freopen(FiLeNaMe".inp","r",stdin),freopen(FiLeNaMe".out","w",stdout); }
template<typename T> inline void inp(T &x) { static char k; static bool neg; while((k=getchar())!='-' && !isdigit(k)); neg = k=='-'; x=(neg=k=='-')?0:k-48; while(isdigit(k=getchar())) x = (x<<3) + (x<<1) + k-48; x=neg?-x:+x; }
template<typename T> inline void out(T x) { if(x<0) putchar('-'),x=-x; if(x>9) out(x/10); putchar(x%10+48); }
#define space putchar(' ')
#define endline putchar('\n')
#define inpint ({ int x; inp(x); x; })
#define inpchar ({ char k; while((k=getchar())==' ' || k=='\n'); k; })
#define inpstr ({ char k; while((k=getchar())==' ' || k=='\n'); string s=""; s+=k; while((k=getchar())!=' ' && k!='\n') s+=k; s; })
/// --------------------------------------------------------------------------------------------------------------------------------
#define long long long
long n,m;
vector<int> adj[maxn];
int numbering;
int num[maxn],pos[maxn];
bool dd[maxn];
int f[maxn];
int trace[maxn];
void dfs(int u) {
if(dd[u]) return;
dd[u] = 1;
for(int v : adj[u]) dfs(v);
num[u] = numbering;
pos[numbering] = u;
--numbering;
}
bool topo_sort() {
bool ans = 1;
numbering = n;
forinc(i,1,n) dfs(i);
return ans;
}
void enter(){
cin>>n;
char x;
forinc(i,1,n)
forinc(j,1,n) {
cin>>x;
if(x=='1') adj[i].push_back(j);
}
}
void solve(){
topo_sort();
f[n]=1;
fordec(i,n-1,1) {
int u = pos[i];
for(int v : adj[u]) {
int j = num[v];
if(f[i]<f[j]+1) {
f[i]=f[j]+1;
trace[i]=j;
}
}
}
int res = 1;
forinc(i,1,n) if(f[i]>f[res]) res=i;
if(f[res]<n) cout<<-1;
else for(int i=res,v=pos[i];v>0;i=trace[i],v=pos[i]) cout<<v<<" ";
}
int32_t main()
{
checkfile(tag);
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
enter();
solve();
return 0;
}
Ly8gVE9QT1NPUlQgYnkgbXVvaWkKLy8gaHR0cHM6Ly92Li4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5qLmNvbS9wcm9ibGVtcy9OS0xFQUdVRS8KI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgdGFnICJtYWluIgojZGVmaW5lIG1heG4gMTAwNwojZGVmaW5lIG9vIDEwMDAwMDAwMDdMTAojZGVmaW5lIG1pZCAoKGwrcik+PjEpCiNkZWZpbmUgZ2V0Yml0KHgsaSkgKCh4KT4+KGkpJjEpCiNkZWZpbmUgb25iaXQoeCxpKSAoKHgpfCgxPDwoaSkpKQojZGVmaW5lIG9mZmJpdCh4LGkpICgoeCkmfigxPDwoaSkpKQojZGVmaW5lIGNudGJpdCh4KSAoX19idWlsdGluX3BvcGNvdW50bGwoeCkpCiNkZWZpbmUgbWVzZXQoYSx4KSBtZW1zZXQoYSx4LHNpemVvZihhKSkKI2RlZmluZSBmb3JpbmMoaSxhLGIpIGZvcihpbnQgaT1hO2k8PWI7aSsrKQojZGVmaW5lIGZvcmRlYyhpLGEsYikgZm9yKGludCBpPWE7aT49YjtpLS0pCiNkZWZpbmUgZGVidWcoeCkgY2Vycjw8I3g8PCIgPSAiPDx4PDwiXG4iCiNkZWZpbmUgcnVudGltZShzdGltZSkgKChjbG9jaygpIC0gc3RpbWUpIC8gQ0xPQ0tTX1BFUl9TRUMgKiAxMDAwKQojZGVmaW5lIGNoZWNrZmlsZShGaUxlTmFNZSkgeyBpZihmb3BlbihGaUxlTmFNZSIuaW5wIiwiciIpKSBmcmVvcGVuKEZpTGVOYU1lIi5pbnAiLCJyIixzdGRpbiksZnJlb3BlbihGaUxlTmFNZSIub3V0IiwidyIsc3Rkb3V0KTsgfQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBpbnAoVCAmeCkgeyBzdGF0aWMgY2hhciBrOyBzdGF0aWMgYm9vbCBuZWc7IHdoaWxlKChrPWdldGNoYXIoKSkhPSctJyAmJiAhaXNkaWdpdChrKSk7IG5lZyA9IGs9PSctJzsgeD0obmVnPWs9PSctJyk/MDprLTQ4OyB3aGlsZShpc2RpZ2l0KGs9Z2V0Y2hhcigpKSkgeCA9ICh4PDwzKSArICh4PDwxKSArICBrLTQ4OyB4PW5lZz8teDoreDsgfQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBvdXQoVCB4KSB7IGlmKHg8MCkgcHV0Y2hhcignLScpLHg9LXg7IGlmKHg+OSkgb3V0KHgvMTApOyBwdXRjaGFyKHglMTArNDgpOyB9CiNkZWZpbmUgc3BhY2UgcHV0Y2hhcignICcpCiNkZWZpbmUgZW5kbGluZSBwdXRjaGFyKCdcbicpCiNkZWZpbmUgaW5waW50ICh7IGludCB4OyBpbnAoeCk7IHg7IH0pCiNkZWZpbmUgaW5wY2hhciAoeyBjaGFyIGs7IHdoaWxlKChrPWdldGNoYXIoKSk9PScgJyB8fCBrPT0nXG4nKTsgazsgfSkKI2RlZmluZSBpbnBzdHIgKHsgY2hhciBrOyB3aGlsZSgoaz1nZXRjaGFyKCkpPT0nICcgfHwgaz09J1xuJyk7IHN0cmluZyBzPSIiOyBzKz1rOyB3aGlsZSgoaz1nZXRjaGFyKCkpIT0nICcgJiYgayE9J1xuJykgcys9azsgczsgfSkKIAovLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI2RlZmluZSBsb25nIGxvbmcgbG9uZwpsb25nIG4sbTsKdmVjdG9yPGludD4gYWRqW21heG5dOwppbnQgbnVtYmVyaW5nOwppbnQgbnVtW21heG5dLHBvc1ttYXhuXTsKYm9vbCBkZFttYXhuXTsKaW50IGZbbWF4bl07CmludCB0cmFjZVttYXhuXTsKIAp2b2lkIGRmcyhpbnQgdSkgewogICAgaWYoZGRbdV0pIHJldHVybjsKIAogICAgZGRbdV0gPSAxOwogCiAgICBmb3IoaW50IHYgOiBhZGpbdV0pIGRmcyh2KTsKIAogICAgbnVtW3VdID0gbnVtYmVyaW5nOwogICAgcG9zW251bWJlcmluZ10gPSB1OwogICAgLS1udW1iZXJpbmc7Cn0KIApib29sIHRvcG9fc29ydCgpIHsKICAgIGJvb2wgYW5zID0gMTsKIAogICAgbnVtYmVyaW5nID0gbjsKIAogICAgZm9yaW5jKGksMSxuKSBkZnMoaSk7CiAKICAgIHJldHVybiBhbnM7Cn0Kdm9pZCBlbnRlcigpewogICAgY2luPj5uOwogCiAgICBjaGFyIHg7CiAKICAgIGZvcmluYyhpLDEsbikKICAgICAgICBmb3JpbmMoaiwxLG4pIHsKICAgICAgICAgICAgY2luPj54OwogICAgICAgICAgICBpZih4PT0nMScpIGFkaltpXS5wdXNoX2JhY2soaik7CiAgICAgICAgfQp9CiAKdm9pZCBzb2x2ZSgpewogICAgdG9wb19zb3J0KCk7CiAKICAgIGZbbl09MTsKICAgIGZvcmRlYyhpLG4tMSwxKSB7CiAgICAgICAgaW50IHUgPSBwb3NbaV07CiAKICAgICAgICBmb3IoaW50IHYgOiBhZGpbdV0pIHsKICAgICAgICAgICAgaW50IGogPSBudW1bdl07CiAgICAgICAgICAgIGlmKGZbaV08ZltqXSsxKSB7CiAgICAgICAgICAgICAgICBmW2ldPWZbal0rMTsKICAgICAgICAgICAgICAgIHRyYWNlW2ldPWo7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAKICAgIGludCByZXMgPSAxOwogICAgZm9yaW5jKGksMSxuKSBpZihmW2ldPmZbcmVzXSkgcmVzPWk7CiAKICAgIGlmKGZbcmVzXTxuKSBjb3V0PDwtMTsKICAgIGVsc2UgZm9yKGludCBpPXJlcyx2PXBvc1tpXTt2PjA7aT10cmFjZVtpXSx2PXBvc1tpXSkgY291dDw8djw8IiAiOwp9CiAKaW50MzJfdCBtYWluKCkKewogICAgY2hlY2tmaWxlKHRhZyk7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOyBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKIAogICAgZW50ZXIoKTsKICAgIHNvbHZlKCk7CiAKICAgIHJldHVybiAwOwp9CiA=