#include <bits/stdc++.h>
using namespace std;
char foo[5002][5002];
vector<int> g[5002];
int col[5002];
queue<int> ans;
void dfs(int u, int par) {
  col[u] = 1;
  for (int i = 0; i < g[u].size(); i++) {
    int v = g[u][i];
    if (col[v] == 0)
      dfs(v, u);
    else {
      if (foo[v - 1][par - 1] == '1' && col[v]) {
        if (ans.empty()) {
          ans.push(v);
          ans.push(par);
          ans.push(u);
        }
      }
    }
  }
}
int main() {
  int n;
  cin >> n;
  for (int i = 1; i <= n; i++) {
    scanf("%s", foo[i - 1]);
    for (int j = 1; j <= n; j++) {
      if (foo[i - 1][j - 1] == '1') {
        g[i].push_back(j);
      }
    }
  }
  for (int i = 1; i <= n; i++) {
    if (!col[i]) dfs(i, -1);
    if (!ans.empty()) {
      while (!ans.empty()) {
        cout << ans.front() << ' ';
        ans.pop();
      }
      return 0;
    }
  }
  cout << -1;
  return 0;
}
