import javax.swing.*;
import java.util.*;
import java.io.*;
import static java.
lang.
Math.
max; import static java.
lang.
Math.
min; import static java.
lang.
Math.
abs;
public class Main {
public static int mod = (int) 1e9 + 7;
static class FastReader {
public FastReader() {
}
while (st == null || !st.hasMoreTokens()) {
try {
e.printStackTrace();
}
}
return st.nextToken();
}
int nextInt() {
}
long nextLong() {
return Long.
parseLong(next
()); }
double nextDouble() {
return Double.
parseDouble(next
()); }
try {
str = br.readLine().trim();
e.printStackTrace();
}
return str;
}
}
static class FastWriter {
public FastWriter() {
}
bw.append("" + object);
}
print(object);
bw.append("\n");
}
bw.append("\n");
}
bw.close();
}
public void printLongArr
(long[] arr
) throws IOException { for (long ele : arr) {
print(ele + " ");
}
println();
}
public void printIntArr
(int[] arr
) throws IOException { for (int ele : arr) {
print(ele + " ");
}
println();
}
}
public static void bfs
(int node,
int[] dist,
int n,
BitSet[] graph
) {
dist[node] = 0;
int level = 0;
frontier.set(node);
visited.set(node);
while (!frontier.isEmpty()) {
for (int u = frontier.nextSetBit(0); u != -1; u = frontier.nextSetBit(u + 1)) { // level order traversal
neighbours.andNot(visited);
nextLevel.or(neighbours);
}
level++;
for (int v = nextLevel.nextSetBit(0); v != -1; v = nextLevel.nextSetBit(v + 1)) {
dist[v] = level;
}
visited.or(nextLevel);
frontier = nextLevel;
}
}
int level = 0;
frontier.set(node);
visited.set(node);
while (!frontier.isEmpty()) {
level++;
for (int u = frontier.nextSetBit(0); u != -1; u = frontier.nextSetBit(u + 1)) { // level order traversal
if(neighbours.get(node)) {
}
neighbours.andNot(visited);
nextLevel.or(neighbours);
}
visited.or(nextLevel);
frontier = nextLevel;
}
return "NO WAY";
}
public static void main
try {
FastReader fin = new FastReader();
FastWriter fout = new FastWriter();
int n = fin.nextInt();
// BitSet[] rev = new BitSet[n];
for (int i = 0; i < n; i++) {
// rev[i] = new BitSet(n);
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
int l = fin.nextInt();
if (l == 1) {
graph[i].set(j);
// rev[j].set(i);
}
}
}
// int[] dist = new int[n];
for (int i = 0; i < n; i++) {
fout.println(bfs2(i, graph));
// bfs(i,dist,n,rev);
// int currentAns = Integer.MAX_VALUE;
// for (int v = graph[i].nextSetBit(0); v != -1; v = graph[i].nextSetBit(v + 1)) {
// if (dist[v] != -1) {
// currentAns = Math.min(currentAns, 1 + dist[v]);
// }
// }
// if (currentAns == Integer.MAX_VALUE) {
// fout.println("NO WAY");
// } else {
// fout.println(currentAns);
// }
}
fout.close();
e.printStackTrace();
return;
}
}
}
aW1wb3J0IGphdmF4LnN3aW5nLio7CmltcG9ydCBqYXZhLnV0aWwuKjsKaW1wb3J0IGphdmEuaW8uKjsKCmltcG9ydCBzdGF0aWMgamF2YS5sYW5nLk1hdGgubWF4OwppbXBvcnQgc3RhdGljIGphdmEubGFuZy5NYXRoLm1pbjsKaW1wb3J0IHN0YXRpYyBqYXZhLmxhbmcuTWF0aC5hYnM7CgpwdWJsaWMgY2xhc3MgTWFpbiB7CiAgICBwdWJsaWMgc3RhdGljIGludCBtb2QgPSAoaW50KSAxZTkgKyA3OwoKICAgIHN0YXRpYyBjbGFzcyBGYXN0UmVhZGVyIHsKICAgICAgICBCdWZmZXJlZFJlYWRlciBicjsKICAgICAgICBTdHJpbmdUb2tlbml6ZXIgc3Q7CgogICAgICAgIHB1YmxpYyBGYXN0UmVhZGVyKCkgewogICAgICAgICAgICBiciA9IG5ldyBCdWZmZXJlZFJlYWRlcihuZXcgSW5wdXRTdHJlYW1SZWFkZXIoU3lzdGVtLmluKSk7CiAgICAgICAgfQoKICAgICAgICBTdHJpbmcgbmV4dCgpIHsKICAgICAgICAgICAgd2hpbGUgKHN0ID09IG51bGwgfHwgIXN0Lmhhc01vcmVUb2tlbnMoKSkgewogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICBzdCA9IG5ldyBTdHJpbmdUb2tlbml6ZXIoYnIucmVhZExpbmUoKSk7CiAgICAgICAgICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7CiAgICAgICAgICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc3QubmV4dFRva2VuKCk7CiAgICAgICAgfQoKICAgICAgICBpbnQgbmV4dEludCgpIHsKICAgICAgICAgICAgcmV0dXJuIEludGVnZXIucGFyc2VJbnQobmV4dCgpKTsKICAgICAgICB9CgogICAgICAgIGxvbmcgbmV4dExvbmcoKSB7CiAgICAgICAgICAgIHJldHVybiBMb25nLnBhcnNlTG9uZyhuZXh0KCkpOwogICAgICAgIH0KCiAgICAgICAgZG91YmxlIG5leHREb3VibGUoKSB7CiAgICAgICAgICAgIHJldHVybiBEb3VibGUucGFyc2VEb3VibGUobmV4dCgpKTsKICAgICAgICB9CgogICAgICAgIFN0cmluZyBuZXh0TGluZSgpIHsKICAgICAgICAgICAgU3RyaW5nIHN0ciA9ICIiOwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgc3RyID0gYnIucmVhZExpbmUoKS50cmltKCk7CiAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CiAgICAgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBzdHI7CiAgICAgICAgfQogICAgfQoKICAgIHN0YXRpYyBjbGFzcyBGYXN0V3JpdGVyIHsKICAgICAgICBwcml2YXRlIGZpbmFsIEJ1ZmZlcmVkV3JpdGVyIGJ3OwoKICAgICAgICBwdWJsaWMgRmFzdFdyaXRlcigpIHsKICAgICAgICAgICAgdGhpcy5idyA9IG5ldyBCdWZmZXJlZFdyaXRlcihuZXcgT3V0cHV0U3RyZWFtV3JpdGVyKFN5c3RlbS5vdXQpKTsKICAgICAgICB9CgogICAgICAgIHB1YmxpYyB2b2lkIHByaW50KE9iamVjdCBvYmplY3QpIHRocm93cyBJT0V4Y2VwdGlvbiB7CiAgICAgICAgICAgIGJ3LmFwcGVuZCgiIiArIG9iamVjdCk7CiAgICAgICAgfQoKICAgICAgICBwdWJsaWMgdm9pZCBwcmludGxuKE9iamVjdCBvYmplY3QpIHRocm93cyBJT0V4Y2VwdGlvbiB7CiAgICAgICAgICAgIHByaW50KG9iamVjdCk7CiAgICAgICAgICAgIGJ3LmFwcGVuZCgiXG4iKTsKICAgICAgICB9CgogICAgICAgIHB1YmxpYyB2b2lkIHByaW50bG4oKSB0aHJvd3MgSU9FeGNlcHRpb24gewogICAgICAgICAgICBidy5hcHBlbmQoIlxuIik7CiAgICAgICAgfQoKICAgICAgICBwdWJsaWMgdm9pZCBjbG9zZSgpIHRocm93cyBJT0V4Y2VwdGlvbiB7CiAgICAgICAgICAgIGJ3LmNsb3NlKCk7CiAgICAgICAgfQoKICAgICAgICBwdWJsaWMgdm9pZCBwcmludExvbmdBcnIobG9uZ1tdIGFycikgdGhyb3dzIElPRXhjZXB0aW9uIHsKICAgICAgICAgICAgZm9yIChsb25nIGVsZSA6IGFycikgewogICAgICAgICAgICAgICAgcHJpbnQoZWxlICsgIiAiKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBwcmludGxuKCk7CiAgICAgICAgfQoKICAgICAgICBwdWJsaWMgdm9pZCBwcmludEludEFycihpbnRbXSBhcnIpIHRocm93cyBJT0V4Y2VwdGlvbiB7CiAgICAgICAgICAgIGZvciAoaW50IGVsZSA6IGFycikgewogICAgICAgICAgICAgICAgcHJpbnQoZWxlICsgIiAiKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBwcmludGxuKCk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBiZnMoaW50IG5vZGUsIGludFtdIGRpc3QsIGludCBuLCBCaXRTZXRbXSBncmFwaCkgewogICAgICAgIEJpdFNldCB2aXNpdGVkID0gbmV3IEJpdFNldCgpOwogICAgICAgIEJpdFNldCBmcm9udGllciA9IG5ldyBCaXRTZXQoKTsgLy8gcXVldWUKCiAgICAgICAgQXJyYXlzLmZpbGwoZGlzdCwgLTEpOwogICAgICAgIGRpc3Rbbm9kZV0gPSAwOwogICAgICAgIGludCBsZXZlbCA9IDA7CiAgICAgICAgZnJvbnRpZXIuc2V0KG5vZGUpOwogICAgICAgIHZpc2l0ZWQuc2V0KG5vZGUpOwogICAgICAgIHdoaWxlICghZnJvbnRpZXIuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgIEJpdFNldCBuZXh0TGV2ZWwgPSBuZXcgQml0U2V0KCk7CiAgICAgICAgICAgIGZvciAoaW50IHUgPSBmcm9udGllci5uZXh0U2V0Qml0KDApOyB1ICE9IC0xOyB1ID0gZnJvbnRpZXIubmV4dFNldEJpdCh1ICsgMSkpIHsgLy8gbGV2ZWwgb3JkZXIgdHJhdmVyc2FsCiAgICAgICAgICAgICAgICBCaXRTZXQgbmVpZ2hib3VycyA9IChCaXRTZXQpIGdyYXBoW3VdLmNsb25lKCk7CiAgICAgICAgICAgICAgICBuZWlnaGJvdXJzLmFuZE5vdCh2aXNpdGVkKTsKICAgICAgICAgICAgICAgIG5leHRMZXZlbC5vcihuZWlnaGJvdXJzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBsZXZlbCsrOwogICAgICAgICAgICBmb3IgKGludCB2ID0gbmV4dExldmVsLm5leHRTZXRCaXQoMCk7IHYgIT0gLTE7IHYgPSBuZXh0TGV2ZWwubmV4dFNldEJpdCh2ICsgMSkpIHsKICAgICAgICAgICAgICAgIGRpc3Rbdl0gPSBsZXZlbDsKICAgICAgICAgICAgfQogICAgICAgICAgICB2aXNpdGVkLm9yKG5leHRMZXZlbCk7CiAgICAgICAgICAgIGZyb250aWVyID0gbmV4dExldmVsOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBiZnMyKGludCBub2RlLCBCaXRTZXRbXSBncmFwaCkgewogICAgICAgIEJpdFNldCB2aXNpdGVkID0gbmV3IEJpdFNldCgpOwogICAgICAgIEJpdFNldCBmcm9udGllciA9IG5ldyBCaXRTZXQoKTsgLy8gcXVldWUKCiAgICAgICAgaW50IGxldmVsID0gMDsKICAgICAgICBmcm9udGllci5zZXQobm9kZSk7CiAgICAgICAgdmlzaXRlZC5zZXQobm9kZSk7CiAgICAgICAgd2hpbGUgKCFmcm9udGllci5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgbGV2ZWwrKzsKICAgICAgICAgICAgQml0U2V0IG5leHRMZXZlbCA9IG5ldyBCaXRTZXQoKTsKICAgICAgICAgICAgZm9yIChpbnQgdSA9IGZyb250aWVyLm5leHRTZXRCaXQoMCk7IHUgIT0gLTE7IHUgPSBmcm9udGllci5uZXh0U2V0Qml0KHUgKyAxKSkgeyAvLyBsZXZlbCBvcmRlciB0cmF2ZXJzYWwKICAgICAgICAgICAgICAgIEJpdFNldCBuZWlnaGJvdXJzID0gKEJpdFNldCkgZ3JhcGhbdV0uY2xvbmUoKTsKICAgICAgICAgICAgICAgIGlmKG5laWdoYm91cnMuZ2V0KG5vZGUpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZy52YWx1ZU9mKGxldmVsKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG5laWdoYm91cnMuYW5kTm90KHZpc2l0ZWQpOwogICAgICAgICAgICAgICAgbmV4dExldmVsLm9yKG5laWdoYm91cnMpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHZpc2l0ZWQub3IobmV4dExldmVsKTsKICAgICAgICAgICAgZnJvbnRpZXIgPSBuZXh0TGV2ZWw7CiAgICAgICAgfQogICAgICAgIHJldHVybiAiTk8gV0FZIjsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbgogICAgICAgICAgICAoU3RyaW5nW10gYXJncykgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIEZhc3RSZWFkZXIgZmluID0gbmV3IEZhc3RSZWFkZXIoKTsKICAgICAgICAgICAgRmFzdFdyaXRlciBmb3V0ID0gbmV3IEZhc3RXcml0ZXIoKTsKCiAgICAgICAgICAgIGludCBuID0gZmluLm5leHRJbnQoKTsKICAgICAgICAgICAgQml0U2V0W10gZ3JhcGggPSBuZXcgQml0U2V0W25dOwogICAvLyAgICAgICAgIEJpdFNldFtdIHJldiA9IG5ldyBCaXRTZXRbbl07CiAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgICAgICAgICBncmFwaFtpXSA9IG5ldyBCaXRTZXQobik7CiAgIC8vICAgICAgICAgICAgIHJldltpXSA9IG5ldyBCaXRTZXQobik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbjsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAgaW50IGwgPSBmaW4ubmV4dEludCgpOwogICAgICAgICAgICAgICAgICAgIGlmIChsID09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZ3JhcGhbaV0uc2V0KGopOwogICAgLy8gICAgICAgICAgICAgICAgICAgIHJldltqXS5zZXQoaSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgLy8gICAgICAgICAgaW50W10gZGlzdCA9IG5ldyBpbnRbbl07CiAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgICAgICAgICBmb3V0LnByaW50bG4oYmZzMihpLCBncmFwaCkpOwovLyAgICAgICAgICAgICAgICBiZnMoaSxkaXN0LG4scmV2KTsKLy8gICAgICAgICAgICAgICAgaW50IGN1cnJlbnRBbnMgPSBJbnRlZ2VyLk1BWF9WQUxVRTsKLy8gICAgICAgICAgICAgICAgZm9yIChpbnQgdiA9IGdyYXBoW2ldLm5leHRTZXRCaXQoMCk7IHYgIT0gLTE7IHYgPSBncmFwaFtpXS5uZXh0U2V0Qml0KHYgKyAxKSkgewovLyAgICAgICAgICAgICAgICAgICAgaWYgKGRpc3Rbdl0gIT0gLTEpIHsKLy8gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50QW5zID0gTWF0aC5taW4oY3VycmVudEFucywgMSArIGRpc3Rbdl0pOwovLyAgICAgICAgICAgICAgICAgICAgfQovLyAgICAgICAgICAgICAgICB9Ci8vICAgICAgICAgICAgICAgIGlmIChjdXJyZW50QW5zID09IEludGVnZXIuTUFYX1ZBTFVFKSB7Ci8vICAgICAgICAgICAgICAgICAgICBmb3V0LnByaW50bG4oIk5PIFdBWSIpOwovLyAgICAgICAgICAgICAgICB9IGVsc2UgewovLyAgICAgICAgICAgICAgICAgICAgZm91dC5wcmludGxuKGN1cnJlbnRBbnMpOwovLyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm91dC5jbG9zZSgpOwogICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CiAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9Cn0K