#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
//英语 看博友好分析 抄博友程序 竞赛图汉密尔顿路径 快输入 没掌握
int read()//抄博友程序
{
char c=getchar();
while(!(c>='0'&& c<='9'))
{
c=getchar();
}
int jg=0;
while(c>='0'&& c<='9')
{
jg=jg*10+c-'0';
c=getchar();
}
return jg;
}
int g[1010][1010];
int ans[1010];
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
g[i][j]=read();
}
}
/*
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
cout<<g[i][j]<<" ";
}
cout<<endl;
}*/
for(int i=1;i<=n;i++)
{
int t=1;//重要 没加wa 结果全0
for(int j=i-1;j>=1;j--)//抄博友程序 排序时快
{
if(g[i][ans[1]]==1)//抄博友程序 ans为排好序的结果 没掌握
{
t=1;
break;
}
if(g[ans[i-1]][i]==1)
{
t=i;
break;
}
if(g[ans[j]][i]==1)//没掌握 这句在程序中位置重要 竞赛图是连通的
{
t=j+1;
break;
}
}
//cout<<i<<" "<<t<<endl;
for(int j=i;j>t;j--)
{
ans[j]=ans[j-1];
}
ans[t]=i;
}
printf("1\n");
printf("%d\n",n);
for(int i=1;i<=n;i++)
{
printf("%d ",ans[i]);
}
printf("\n");
}
return 0;
}