//
#include <bits/stdc++.h>
using namespace std;
int n, t, u, a[200][200], b[200][200], visited[200];
vector<int> ans;
int degn[200] = {}, degp[200] = {};
ifstream fin("CT.INP");
ofstream fout("CT.OUT");
void DFS(int u){
visited[u] = 1;
for(int i= 1; i<=n; i++)
if(b[u][i] == 1 and visited[i] == 0)
DFS(i);
}
int solve1(){
DFS(1);
for(int i=1; i<=n; i++)
if(visited[i] == 0)
return 0;
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
degp[i] += a[i][j];
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
degn[i] += a[j][i];
int cnt = 0;
for(int i=1; i<=n; i++)
if(degn[i] != degp[i])
cnt++;
if(cnt == 0)
return 1;
if(cnt == 2)
return 2;
return 0;
}
void solve2(){
stack<int> st;
st.push(u);
while(!st.empty()){
int s = st.top();
bool exist = 0;
for(int i=1; i<=n; i++){
if(a[s][i] == 1){
st.push(i);
exist = 1;
a[s][i] = 0;
break;
}
}
if(exist == 0){
st.pop();
ans.push_back(s);
}
}
for(int i=ans.size()-1; i>=0; i--)
fout << ans[i] <<" ";
}
int main(){
fin >> t;
fin >> n;
if(t==2)
fin >> u;
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++){
fin >> a[i][j];
if(a[i][j] == 1)
b[i][j] = b[j][i] = a[i][j];
}
if(t == 1)
fout << solve1();
else
solve2();
return 0;
}
Ly8KI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBuLCB0LCB1LCBhWzIwMF1bMjAwXSwgYlsyMDBdWzIwMF0sIHZpc2l0ZWRbMjAwXTsKdmVjdG9yPGludD4gYW5zOwppbnQgZGVnblsyMDBdID0ge30sIGRlZ3BbMjAwXSA9IHt9OwppZnN0cmVhbSBmaW4oIkNULklOUCIpOwpvZnN0cmVhbSBmb3V0KCJDVC5PVVQiKTsKdm9pZCBERlMoaW50IHUpewoJdmlzaXRlZFt1XSA9IDE7Cglmb3IoaW50IGk9IDE7IGk8PW47IGkrKykKCQlpZihiW3VdW2ldID09IDEgYW5kIHZpc2l0ZWRbaV0gPT0gMCkKCQkJREZTKGkpOwp9CmludCBzb2x2ZTEoKXsKCURGUygxKTsKCWZvcihpbnQgaT0xOyBpPD1uOyBpKyspCgkJaWYodmlzaXRlZFtpXSA9PSAwKQoJCQlyZXR1cm4gMDsKCWZvcihpbnQgaT0xOyBpPD1uOyBpKyspCgkJZm9yKGludCBqPTE7IGo8PW47IGorKykKCQkJZGVncFtpXSArPSBhW2ldW2pdOwoJZm9yKGludCBpPTE7IGk8PW47IGkrKykKCQlmb3IoaW50IGo9MTsgajw9bjsgaisrKQoJCQlkZWduW2ldICs9IGFbal1baV07CglpbnQgY250ID0gMDsKCWZvcihpbnQgaT0xOyBpPD1uOyBpKyspCgkJaWYoZGVnbltpXSAhPSBkZWdwW2ldKQoJCQljbnQrKzsKCWlmKGNudCA9PSAwKQoJCXJldHVybiAxOwoJaWYoY250ID09IDIpCgkJcmV0dXJuIDI7CglyZXR1cm4gMDsKfQp2b2lkIHNvbHZlMigpewoJc3RhY2s8aW50PiBzdDsKCXN0LnB1c2godSk7Cgl3aGlsZSghc3QuZW1wdHkoKSl7CgkJaW50IHMgPSBzdC50b3AoKTsKCQlib29sIGV4aXN0ID0gMDsKCQlmb3IoaW50IGk9MTsgaTw9bjsgaSsrKXsKCQkJaWYoYVtzXVtpXSA9PSAxKXsKCQkJCXN0LnB1c2goaSk7CgkJCQlleGlzdCA9IDE7CgkJCQlhW3NdW2ldID0gMDsKCQkJCWJyZWFrOwoJCQl9CgkJfQoJCWlmKGV4aXN0ID09IDApewoJCQlzdC5wb3AoKTsKCQkJYW5zLnB1c2hfYmFjayhzKTsKCQl9Cgl9Cglmb3IoaW50IGk9YW5zLnNpemUoKS0xOyBpPj0wOyBpLS0pCgkJZm91dCA8PCBhbnNbaV0gPDwiICI7Cn0KaW50IG1haW4oKXsKCWZpbiA+PiB0OwoJZmluID4+IG47CglpZih0PT0yKQoJCWZpbiA+PiB1OwkKCglmb3IoaW50IGk9MTsgaTw9bjsgaSsrKQoJCWZvcihpbnQgaj0xOyBqPD1uOyBqKyspewoJCQlmaW4gPj4gYVtpXVtqXTsKCQkJaWYoYVtpXVtqXSA9PSAxKQoJCQkJYltpXVtqXSA9IGJbal1baV0gPSBhW2ldW2pdOwoJCX0KCWlmKHQgPT0gMSkKCQlmb3V0IDw8IHNvbHZlMSgpOwoJZWxzZQoJCXNvbHZlMigpOwoJcmV0dXJuIDA7Cn0=