#include<iostream>
#include<algorithm>
using namespace std;
bool zaeti_temi[21];
int main (){
    int n, k, p[11], temi[11][21], i, j, max = 0, m = 0, br = 0, ostava6ti[20], l, q, suvpadeniq[10], maxsuvp;
    int nomera[10], z = 0, t, y;
    cin >> n >> k;
    for(i = 1; i <= n; i ++){
        cin >> p[i];
        for(j = 1; j <= p[i]; j ++){
            cin >> temi[i][j];
        }
        if(p[i] > max){
            max = p[i];
            m = i;
        }
    }
    if(max == k){
        cout << 1 << ' ' << m;
    }else{
        nomera[z] = m;
        z ++;
        br ++;
        for(i = 1; i <= p[m]; i ++){
            zaeti_temi[temi[m][i]] = true;
        }
        
        for(i = 1; ; i ++){
            q = 0;
            for(l = 1; l <= k; l ++){
                if(!zaeti_temi[l]){
                    ostava6ti[q] = l;
                    q ++;
                }
            }
            for(t = 1; t <= 10; t ++){
                suvpadeniq[t] = 0;
            }
            for(t = 0; t < q; t ++){
                for(l = 1; l <= n; l ++){
                    for(j = 1; j <= p[l]; j ++){
                        if(temi[l][j] == ostava6ti[t]){
                            suvpadeniq[l] ++;
                        }
                    }
                }
            }
            maxsuvp = 0;
            for(t = 1; t <= n; t ++){
                if(suvpadeniq[t] > maxsuvp){
                    maxsuvp = suvpadeniq[t];
                    nomera[z] = t;
                    z ++;
                    br ++;
                    y = t;
                }
            }
            for(t = 1; t <= p[y]; t ++){
                zaeti_temi[temi[y][t]] = true;
            }
            if(maxsuvp == 0){
                break;
            }
        }
        cout << br << '\n';
        sort(nomera + 0, nomera + z);
        for(t = 0; t < z - 1; t ++){
            cout << nomera[t] << ' ';
        }
        cout << nomera[z - 1];
    }
    cout << '\n';
return 0;
}
