#include<bits/stdc++.h>
using namespace std;
struct DLX{
int n,m,cnt,a[1001][1001],pos[6001][2],x[6001],y[6001],head[6001],l[6001],r[6001],u[6001],d[6001],s[6001],ans[1001];
void init(){
cin>>n>>m;
for(int i=1;i<=m;++i)
l[i]=i-1,r[i]=i+1,u[i]=d[i]=i;
l[0]=m,r[m]=0;
cnt=m+1;
memset(head,-1,sizeof(head));
memset(s,0,sizeof(s));
}
void add(int v,int c){
x[++cnt]=c;y[cnt]=v;++s[cnt];
u[cnt]=c;d[cnt]=d[c];u[d[c]]=cnt;d[c]=cnt;
if(head[v]<0)
head[v]=l[cnt]=r[cnt]=cnt;else{
r[cnt]=r[head[v]];l[cnt]=head[v];
r[head[v]]=cnt;l[r[head[v]]]=cnt;
}
}
void del(int c){
l[r[c]]=l[c];
r[l[c]]=r[c];
for(int i=d[c];i!=c;i=d[i])
for(int j=r[i];j!=i;j=r[j])
u[d[j]]=u[j],d[u[j]]=d[j],--s[x[j]];
}
void redel(int c){
for(int i=u[c];i!=c;i=u[i])
for(int j=l[i];j!=i;j=l[j])
u[d[j]]=d[u[j]]=j,++s[x[j]];
l[r[c]]=r[l[c]]=c;
}
void print(){
if(ans[0])
for(int i=1;i<=ans[0];++i)
cout<<ans[i]<<' ';else
cout<<"No Solution!";
}
bool dfs(int c){
if(!r[0]){
print();
return 1;
}
int cc=r[0];
for(int i=r[0];i;i=r[i])
if(s[i]<s[c]) c=i;
del(cc);
for(int i=d[cc];i!=cc;i=d[i]){
ans[c]=y[i];
for(int j=r[i];j!=i;j=r[j]) del(x[j]);
if(dfs(c+1)) return 1;
for(int j=l[i];j!=i;j=l[j]) redel(x[j]);
}
redel(cc);
return 0;
}
void input(){
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j){
cin>>a[i][j];
if(a[i][j])
add(i,j);
}
}
}dlx;
int main(){
dlx.init();
dlx.input();
dlx.dfs(1);
return 0;
}
求助,全输出了No Solution!