const fi='';
fo='';
Type MAs=array[1..2000,1..2000] of char;
var n1,n2,m1,m2,l:longint;
a:array[1..300,1..300] of char;
s:MAs;
sol:array[1..400000,1..2] of longint;
Procedure ini;
var f:text;
i,j:longint;
Begin
assign(f,fi);
reset(f);
readln(f,n1,n2);
readln(f);
for i:=1 to n1 do
Begin
for j:=1 to n2 do read(f,a[i,j]);
readln(f);
readln(f);
End;
readln(f,m1,m2);
readln(f);
for i:=1 to m1 do
Begin
for j:=1 to m2 do read(f,s[i,j]);
readln(f);
readln(f);
End;
close(f);
End;
Function cmp(i,j,p:longint):boolean;
var l:longint;
Begin
for l:=1 to n1 do
if not (s[i+p-1,j+l-1]=a[p,l]) then exit(false);
exit(true);
End;
Procedure main;
var i,k,j:longint;
st:boolean;
Begin
l:=0;
for i:=1 to m1-n1+1 do
for j:=1 to m2-n2+1 do
Begin
st:=true;
for k:=i to i+n1-1 do
if not cmp(i,j,k-i+1) then
Begin
st:=false;
break;
End;
if st then
Begin
inc(l);
sol[l,1]:=i;
sol[l,2]:=j;
End;
End;
End;
Procedure inmax;
var i,j:longint;
Begin
n1:=3;n2:=3;
m1:=2000;m2:=2000;
for i:=1 to m1 do
for j:=1 to m2 do
Begin
s[i,j]:=chr(random(100-97)+97);
End;
for i:=1 to n1 do
for j:=1 to n2 do
Begin
a[i,j]:=chr(random(100-97)+97);
End;
End;
Procedure outo;
var f:text;
i:longint;
Begin
assign(f,fo);
rewrite(f);
if l=0 then write(f,'NO MATCH FOUND...');
for i:=1 to l do
Begin
writeln(f,'(',sol[i,1],',',sol[i,2],')');
writeln(f);
End;
close(f);
End;
Begin
ini;
main;
outo;
End.
Help me.