#include <iostream>
#include <climits>
#include <cstdio>
#include <cstring>
#include <vector>
#include <string>
using namespace std;
int gr[15][15];
bool found = false;
vector<int> vb;
int node,length;
int backtrack(int st,int len,bool visit[])
{
if(len==length)
{
found=1;
printf("(");
for(int i=0;i<vb.size();i++)
{
printf("%d%s",vb[i]+1,i==vb.size()-1?")\n":",");
}
return 0;
}
for(int i=0;i<node;i++)
{
if(gr[st][i]==1 && visit[i]==0)
{
visit[i]=1;
vb.push_back(i);
backtrack(i,len+1,visit);
visit[i]=0;
vb.pop_back();
}
}
return 1;
}
int main()
{
int trash;
int parent[15];
bool visit[15];
bool flag=false;
do
{
scanf("%d",&node);
scanf("%d",&length);
memset(gr,0,sizeof(gr));
for(int i=0;i<node;i++)
{
for(int j=0;j<node;j++)
{
scanf("%d",&gr[i][j]);
}
}
int len=0;
int st=0;
vb.clear();
for(int i=0;i<node;i++)
{
visit[i]=false;
parent[i]=-1;
}
visit[st]=1;
vb.push_back(st);
if(flag)
printf("\n");
flag=1;
found=0;
backtrack(st,len,visit);//from 1st node
if(!found)
printf("no walk of length %d\n",length);
}while(scanf("%d",&trash)==1);
return 0;
}