#include <bits/stdc++.h>
using namespace std;
struct comp
{
bool operator()(const pair<int, int>& a, const pair<int, int>& b)
{
return a.second >= b.second;
}
};
int main()
{
int n,m;
scanf("%d %d", &n, &m);
bitset<300> subsets[m];
bitset<300> nflag[n]; // flag of connected number for each n
map<int, int> ncount; // count number connected to n
set<pair<int,int>, comp> setsize_pair;
int size, key;
for(int i = 0; i < m; i++)
{
scanf("%d", &size);
set<int> tlist;
for(int p = 0; p < size; p++)
{
scanf("%d", &key);
subsets[i][key] = 1;
tlist.insert(key);
}
setsize_pair.insert(make_pair(i, subsets[i].count()));
for(int p = 0; p < tlist.size(); p++)
{
int ip = *next(tlist.begin(), p);
for(int i = p; i < tlist.size(); i++)
{
nflag[ip][*next(tlist.begin(), i)] = 1;
nflag[*next(tlist.begin(), i)][ip] = 1;
}
ncount[ip] = nflag[ip].count();
}
}
set<pair<int,int>, comp> ncountset;
for(auto i : ncount)
{
ncountset.insert(i);
}
bitset<300> res;
bitset<300> sel_node;
set<int> resi;
for(auto i : ncountset)
{
if(res.count() >= n) break;
if(res != (res | nflag[i.first]))
{
res |= nflag[i.first];
sel_node[i.first] = 1;
}
}
if(!(res.count() >= n))
{
printf("-1\n");
return 0;
}
bitset<300> uniquen;
bitset<300> temp;
bitset<300> intersection;
vector<int> choosen_s;
intersection.set();
for(auto i : setsize_pair)
{
if(temp.count() >= n) break;
if((subsets[i.first] & sel_node).any() && (temp != (temp | subsets[i.first])))
{
uniquen ^= subsets[i.first];
temp |= subsets[i.first];
intersection &= subsets[i.first];
choosen_s.push_back(i.first);
}
}
uniquen ^= intersection;
set<int> ans;
set<int> tans;
int sans = 300;
for(auto i = choosen_s.begin(); i != choosen_s.end(); i++)
{
temp.reset();
tans.clear();
vector<int>::iterator j = choosen_s.begin() + distance(choosen_s.begin(), i);
for(; j != choosen_s.end(); j++)
{
if(temp.count() >= n) break;
if((subsets[*j] & uniquen).any())
{
temp |= subsets[*j];
tans.insert(*j);
}
}
if(temp.count() < n) break;
if(tans.size() <= sans)
{
sans = tans.size();
ans = tans;
}
}
printf("%d\n", ans.size());
for(auto i = ans.begin(); i != ans.end(); i++)
{
if(i == ans.begin()) printf("%d", *i);
else printf(" %d", *i);
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3QgY29tcAp7CiAgICBib29sIG9wZXJhdG9yKCkoY29uc3QgcGFpcjxpbnQsIGludD4mIGEsIGNvbnN0IHBhaXI8aW50LCBpbnQ+JiBiKQogICAgewogICAgICAgIHJldHVybiBhLnNlY29uZCA+PSBiLnNlY29uZDsKICAgIH0KfTsKCmludCBtYWluKCkKewogICAgaW50IG4sbTsKICAgIHNjYW5mKCIlZCAlZCIsICZuLCAmbSk7CiAgICBiaXRzZXQ8MzAwPiBzdWJzZXRzW21dOwogICAgYml0c2V0PDMwMD4gbmZsYWdbbl07IC8vIGZsYWcgb2YgY29ubmVjdGVkIG51bWJlciBmb3IgZWFjaCBuCiAgICBtYXA8aW50LCBpbnQ+IG5jb3VudDsgLy8gY291bnQgbnVtYmVyIGNvbm5lY3RlZCB0byBuCiAgICBzZXQ8cGFpcjxpbnQsaW50PiwgY29tcD4gc2V0c2l6ZV9wYWlyOwogICAgCiAgICBpbnQgc2l6ZSwga2V5OwogICAgZm9yKGludCBpID0gMDsgaSA8IG07IGkrKykKICAgIHsKICAgICAgICBzY2FuZigiJWQiLCAmc2l6ZSk7CiAgICAgICAgc2V0PGludD4gdGxpc3Q7CiAgICAgICAgZm9yKGludCBwID0gMDsgcCA8IHNpemU7IHArKykKICAgICAgICB7CiAgICAgICAgICAgIHNjYW5mKCIlZCIsICZrZXkpOwogICAgICAgICAgICBzdWJzZXRzW2ldW2tleV0gPSAxOwogICAgICAgICAgICB0bGlzdC5pbnNlcnQoa2V5KTsKICAgICAgICB9CiAgICAgICAgc2V0c2l6ZV9wYWlyLmluc2VydChtYWtlX3BhaXIoaSwgc3Vic2V0c1tpXS5jb3VudCgpKSk7CiAgICAgICAgZm9yKGludCBwID0gMDsgcCA8IHRsaXN0LnNpemUoKTsgcCsrKQogICAgICAgIHsKICAgICAgICAgICAgaW50IGlwID0gKm5leHQodGxpc3QuYmVnaW4oKSwgcCk7CiAgICAgICAgICAgIGZvcihpbnQgaSA9IHA7IGkgPCB0bGlzdC5zaXplKCk7IGkrKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbmZsYWdbaXBdWypuZXh0KHRsaXN0LmJlZ2luKCksIGkpXSA9IDE7CiAgICAgICAgICAgICAgICBuZmxhZ1sqbmV4dCh0bGlzdC5iZWdpbigpLCBpKV1baXBdID0gMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBuY291bnRbaXBdID0gbmZsYWdbaXBdLmNvdW50KCk7CiAgICAgICAgfQogICAgfQogICAgCiAgICBzZXQ8cGFpcjxpbnQsaW50PiwgY29tcD4gbmNvdW50c2V0OwogICAgZm9yKGF1dG8gaSA6IG5jb3VudCkKICAgIHsKICAgICAgICBuY291bnRzZXQuaW5zZXJ0KGkpOyAKICAgIH0KCiAgICBiaXRzZXQ8MzAwPiByZXM7CiAgICBiaXRzZXQ8MzAwPiBzZWxfbm9kZTsKICAgIHNldDxpbnQ+IHJlc2k7CiAgICBmb3IoYXV0byBpIDogbmNvdW50c2V0KQogICAgewogICAgICAgIGlmKHJlcy5jb3VudCgpID49IG4pIGJyZWFrOwogICAgICAgIGlmKHJlcyAhPSAocmVzIHwgbmZsYWdbaS5maXJzdF0pKQogICAgICAgIHsKICAgICAgICAgICAgcmVzIHw9IG5mbGFnW2kuZmlyc3RdOwogICAgICAgICAgICBzZWxfbm9kZVtpLmZpcnN0XSA9IDE7CiAgICAgICAgfQogICAgfQogICAgaWYoIShyZXMuY291bnQoKSA+PSBuKSkKICAgIHsKICAgICAgICBwcmludGYoIi0xXG4iKTsKICAgICAgICByZXR1cm4gMDsKICAgIH0KICAgIGJpdHNldDwzMDA+IHVuaXF1ZW47CiAgICBiaXRzZXQ8MzAwPiB0ZW1wOwogICAgYml0c2V0PDMwMD4gaW50ZXJzZWN0aW9uOwogICAgdmVjdG9yPGludD4gY2hvb3Nlbl9zOwogICAgaW50ZXJzZWN0aW9uLnNldCgpOwogICAgZm9yKGF1dG8gaSA6IHNldHNpemVfcGFpcikKICAgIHsKICAgICAgICBpZih0ZW1wLmNvdW50KCkgPj0gbikgYnJlYWs7CiAgICAgICAgaWYoKHN1YnNldHNbaS5maXJzdF0gJiBzZWxfbm9kZSkuYW55KCkgJiYgKHRlbXAgIT0gKHRlbXAgfCBzdWJzZXRzW2kuZmlyc3RdKSkpCiAgICAgICAgewogICAgICAgICAgICB1bmlxdWVuIF49IHN1YnNldHNbaS5maXJzdF07CiAgICAgICAgICAgIHRlbXAgfD0gc3Vic2V0c1tpLmZpcnN0XTsKICAgICAgICAgICAgaW50ZXJzZWN0aW9uICY9IHN1YnNldHNbaS5maXJzdF07CiAgICAgICAgICAgIGNob29zZW5fcy5wdXNoX2JhY2soaS5maXJzdCk7CiAgICAgICAgfQogICAgfQoKICAgIHVuaXF1ZW4gXj0gaW50ZXJzZWN0aW9uOwoKICAgIHNldDxpbnQ+IGFuczsKICAgIHNldDxpbnQ+IHRhbnM7CiAgICBpbnQgc2FucyA9IDMwMDsKICAgIGZvcihhdXRvIGkgPSBjaG9vc2VuX3MuYmVnaW4oKTsgaSAhPSBjaG9vc2VuX3MuZW5kKCk7IGkrKykKICAgIHsKICAgICAgICB0ZW1wLnJlc2V0KCk7CiAgICAgICAgdGFucy5jbGVhcigpOwogICAgICAgIHZlY3RvcjxpbnQ+OjppdGVyYXRvciBqID0gY2hvb3Nlbl9zLmJlZ2luKCkgKyBkaXN0YW5jZShjaG9vc2VuX3MuYmVnaW4oKSwgaSk7CiAgICAgICAgZm9yKDsgaiAhPSBjaG9vc2VuX3MuZW5kKCk7IGorKykKICAgICAgICB7CiAgICAgICAgICAgIGlmKHRlbXAuY291bnQoKSA+PSBuKSBicmVhazsKICAgICAgICAgICAgaWYoKHN1YnNldHNbKmpdICYgdW5pcXVlbikuYW55KCkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHRlbXAgfD0gc3Vic2V0c1sqal07CiAgICAgICAgICAgICAgICB0YW5zLmluc2VydCgqaik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYodGVtcC5jb3VudCgpIDwgbikgYnJlYWs7CiAgICAgICAgaWYodGFucy5zaXplKCkgPD0gc2FucykKICAgICAgICB7CiAgICAgICAgICAgIHNhbnMgPSB0YW5zLnNpemUoKTsKICAgICAgICAgICAgYW5zID0gdGFuczsKICAgICAgICB9CiAgICB9CgogICAgcHJpbnRmKCIlZFxuIiwgYW5zLnNpemUoKSk7CiAgICBmb3IoYXV0byBpID0gYW5zLmJlZ2luKCk7IGkgIT0gYW5zLmVuZCgpOyBpKyspCiAgICB7CiAgICAgICAgaWYoaSA9PSBhbnMuYmVnaW4oKSkgcHJpbnRmKCIlZCIsICppKTsKICAgICAgICBlbHNlIHByaW50ZigiICVkIiwgKmkpOwogICAgfQp9