import java.io.IOException;
import java.util.Arrays;
import java.util.Comparator;
import java.util.StringTokenizer;

public class Main {
        public static String readLn (int maxLg) {
                byte lin[] = new byte [maxLg];
                int lg = 0, car = -1;

                try {
                        while (lg < maxLg) {
                                car = System.in.read();
                                if ((car < 0) || (car == '\n')) break;
                                lin [lg++] += car;
                        }
                }
                catch (IOException e) {
                        return (null);
                }

                if ((car < 0) && (lg == 0)) return (null);
                return (new String (lin, 0, lg));
        }
       
        int boxCount;          // box? ?? (Line?)
        int boxLength;         // ??? box? ?? (? Line? ?? ??)
        int maxLength;         // Property? ???? ?? box? ??
        int[][] boxMap;                // ??? Box? ??? ??
        int[][] resultMap;     // ??????? ??? ????? ??
       
        public Main() {
                String line;
       
                // ??? ???.
                while((line = readLn(255)) != null) {
                        StringTokenizer in = new StringTokenizer(line);
                        boxCount = Integer.parseInt(in.nextToken());
                        boxLength = Integer.parseInt(in.nextToken());
                       
                        init();
                        start();
                        print();
                }
        }
       
        /**
         * ??? ?????.
         */
        public void init() {
                boxMap = new int[boxCount+1][];
                boxMap[0] = new int[boxLength+1];
                resultMap = new int[boxCount+1][boxCount+1];
                resultMap[1][1] = 1;
                maxLength = 0;
               
                int[] boxArray;
               
                int i, j;
                for(i=0 ; i<boxCount ; i++) {
                        boxArray = new int[boxLength+1];
                        boxArray[0] = i+1;
                       
                        StringTokenizer in = new StringTokenizer(readLn(255));
                       
                        for(j=0 ; j<boxLength ; j++)
                                boxArray[j+1] = Integer.parseInt(in.nextToken());
                       
                        // ???? ? Line(Box)? ??? ????. (0??? ????? ??? ????.)
                        Arrays.sort(boxArray, 1, boxLength+1);
                        boxMap[i+1] = boxArray;
                }
               
                // 2?? ??? ????.
                Arrays.sort(boxMap, new Comparator<int[]>() {
                        public int compare(int[] arr1, int[] arr2) {
                                int i;
                                for(i=1 ; i<=boxLength ; i++)
                                        if(arr1[i] < arr2[i])
                                                return -1;
                                return 1;
                        }
                });
        }
       
        /**
         * ??????? ??? Longest String? ???.
         */
        public void start() {
                int i, j;
                for(i=1 ; i<=boxCount ; i++) {
                        for(j=i ; j<=boxCount ; j++) {
                                // i? j? ?? ?? (i,j)? ?? ?? Column? Max???.
                                if(i == j) {
                                        resultMap[i][j] = getMaxValue(i);
                                        maxLength = Math.max(resultMap[i][i], maxLength);
                                        continue;
                                }
                               
                                // boxMap[i]? boxMap[j]?? ?? ??
                                // resultMap[i][j]? lengthArray[i](i?? box? ?? length) + 1??.
                                if(compare(boxMap[i], boxMap[j]) < 0)
                                        resultMap[i][j] = resultMap[i][i] + 1;
                        }
                }
        }
       
        /**
         * ??? ????.
         */
        public void print() {
                // maxLength? ????.
                System.out.println(maxLength);
               
                // path? ????.
                int i;
                for(i=1 ; i<=boxCount ; i++) {
                        if(resultMap[i][i] == maxLength) {
                                printPath(i);
                                break;
                        }
                }
                System.out.println();
        }
       
        /**
         * index?? ??? ?? ???? index?? ??? ????.
         * @param index
         */
        private void printPath(int index) {
                if(resultMap[index][index] == 1) {
                        System.out.print(boxMap[index][0]);
                        return;
                }
               
                int i;
                for(i=index-1 ; i>=1 ; i--) {
                        if(resultMap[index][index] == resultMap[i][index]) {
                                printPath(i);
                                System.out.print(" " + boxMap[index][0]);
                                break;
                        }
                }
        }
       
        /**
         * index?? Column? ???? ????.
         * @param index 
         * @return
         */
        private int getMaxValue(int index) {
                int max = 0;
               
                int i;
                for(i=index ; i>=1 ; i--)
                        max = Math.max(resultMap[i][index], max);
                return max;
        }
       
        /**
         * arr1? arr2? ????. arr1? ?? ??? arr2? ?? ???? ??? ??? ????.
         * @param arr1 ??1
         * @param arr2 ??2
         * @return arr1? arr2?? ?? ??? -1, ??? 1
         */
        private int compare(int[] arr1, int[] arr2) {
                int i;
                for(i=1 ; i<=boxLength ; i++)
                        if(arr1[i] >= arr2[i])
                                return 1;
                return -1;
        }
        
        public static void main(String[] args) {
                new Main();
        }
}
