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 ****************************************************************/