#include<stdio.h>
#include<stdlib.h>
#define box_max 32
#define dim_max 11
int data[box_max][dim_max];
int position[box_max];
int com(const void *a, const  void *b) {
   return *(int *)a - *(int *)b;
}
int main(){
    int i,j,bn,dn;
	freopen("103.in","r",stdin);
	//freopen("103out.in","w",stdout);
	while(scanf("%d %d",&bn,&dn)==2){
		for(i=0;i<bn;i++){
			for(j=0;j<dn;j++){
				scanf("%d ",&data[i][j]);
			}
            position[i]=i;
            qsort(data[i],dn,sizeof(int),com);
		}
		//print data
		/*for(i=0;i<bn;i++){
			for(j=0;j<dn;j++)
				printf("%d ",data[i][j]);
			printf("\n");
		}*/

        //sort
		//sort
		for(i=0;i<bn-1;i++){
			for(j=i+1;j<bn;j++){
				for(int p=0;p<dn;p++){
                    if(data[i][p]<data[j][p])
						break;
				    if(data[i][p]>data[j][p]){
					     for(int k=0;k<dn;k++){
						     int tem=data[i][k];
						     data[i][k]=data[j][k];
						     data[j][k]=tem;
						 }
						 int t;
						 t=position[i];
						 position[i]=position[j];
						 position[j]=t;
						 break;
					}
				}
			}
		}
		//print
		/*for(i=0;i<bn;i++){
			printf("%d-->",position[i]);
			for(j=0;j<dn;j++)
				printf("%d ",data[i][j]);
			printf("\n");
		}
		printf("\n\n");*/

		int par[box_max],inside[box_max];
		for(i=0;i<bn;i++){
			inside[i]=1;
			par[i]=-1;
		}
        //lis
		for(i=0;i<bn-1;i++){
			for(j=i+1;j<bn;j++){
			      int flag=1;
                  for(int k=0;k<dn;k++){
					  if(data[i][k]>=data[j][k]){
						  flag=0;
						  break;
					  }
				  }

				  if(flag==1 && par[i]+1>par[j]){
				             par[j]=i;
							 inside[j]++;
				  }
			}
		}
        //print
		/*for(i=0;i<bn;i++)
			printf("%d ",inside[i]);
		printf("\n");
		for(i=0;i<bn;i++)
			printf("%d ",par[i]);
		printf("\n\n\n");*/


        int max=0,last;
		for(i=0;i<bn;i++){
            if(max<=inside[i]){
				max=inside[i];
			}	last=i;
		}
        //printf("%d\n",max);
		
        int tem[box_max],tc=0;
		while(1){
           if(last==-1)
			   break;
		   else{
			   tem[tc]=last;
			   tc++;
			   last=par[last];
		   }
		}
		//print
		/*for(i=0;i<tc;i++)
			printf("%d ",tem[i]);
		printf("\n");*/
		
		i=0;j=tc-1;
		while(i<j){
			int t;
			t=tem[i];
			tem[i]=tem[j];
			tem[j]=t;
			i++;
			j--;
		}
        //print
        /*for(i=0;i<tc;i++)
			printf("%d ",tem[i]);
		printf("\n");*/
        printf("%d\n",tc);
		for(i=0;i<tc;i++)
			tem[i]=position[tem[i]];
		//print
        for(i=0;i<tc;i++){
			if(i==(tc-1))
				printf("%d",tem[i]+1);
			else
			  printf("%d ",tem[i]+1);
		}
		printf("\n");
        

	}
	return 0;
}
