#include <bits/stdc++.h>
using namespace std;
const int inf = 0x3f3f3f3f;
char G[5010][5010];
int vis[5010];
int N;
int dfs(int u, int pre) {
  vis[u] = 1;
  for (int i = 1; i <= N; i++) {
    if (G[u][i] - '0') {
      if (G[i][pre] - '0') {
        printf("%d %d %d\n", u, i, pre);
        return 1;
      }
      if (!vis[i] && dfs(i, u)) return 1;
    }
  }
  return 0;
}
int main() {
  scanf("%d", &N);
  for (int i = 1; i <= N; i++) scanf("%s", G[i] + 1);
  memset(vis, false, sizeof(vis));
  for (int i = 1; i <= N; i++) {
    if (!vis[i] && dfs(i, i)) return 0;
  }
  puts("-1");
  return 0;
}
