const
hash:array[1..10]of int64=
(1007,10007,12347,12349,100017,111647,
19720308,19750920,19981117,20150208);
type data=array[1..10]of int64;
procedure readdata(var a:data);
var c:char;
b:boolean;
i:longint;
n:int64;
begin
for i:=1 to 10 do a[i]:=0;
repeat read(c);
until (c>='0')and(c<='9')or(c='-');
if c='-' then
begin
b:=true;
read(c);
end else b:=false;
while (c>='0')and(c<='9') do
begin
n:=ord(c)-48;
for i:=1 to 10 do a[i]:=(a[i]*10+n)mod hash[i];
read(c);
end;
if b then
for i:=1 to 10 do if a[i]<>0 then
a[i]:=hash[i]-a[i];
end;
var
a:array[0..100]of data;
list:array[1..1000000]of longint;
n,m,i,j,k,x,top:longint;
ok:array[1..1000000]of boolean;
function check2(x:int64;k:longint):boolean;
var i:longint;
sum:int64;
begin
sum:=0;
for i:=n downto 0 do
sum:=(sum*x+a[i][k])mod hash[k];
if sum<>0 then
begin
i:=x;
while i<=m do
begin
ok[i]:=true;
i:=i+hash[k];
end;
end;
exit(sum=0);
end;
function check(x:int64):boolean;
var k:longint;
begin
if ok[x] then exit(false);
for k:=1 to 10 do
if check2(x,k)=false then exit(false);
exit(true);
end;
begin
readln(n,m);
for i:=0 to n do readdata(a[i]);    
for i:=1 to m do
if check(i) then
begin
inc(top);
list[top]:=i;
end;
writeln(top);
for i:=1 to top do writeln(list[i]);
end.
/**************************************************************
	Problem: 2339
	User: admin
	Language: Pascal
	Result: Wrong Answer
****************************************************************/