Problem:
Pattern Search

Find places where a R × C pattern is found within a H × W region. Print top-left coordinates (i, j) of sub-regions where the pattern found. The top-left and bottom-right coordinates of the region is (0, 0) and (H-1, W-1) respectively.

Input

In the first line, two integers H and W are given. In the following H lines, i-th lines of the region are given.

In the next line, two integers R and C are given. In the following R lines, i-th lines of the pattern are given.

output

For each sub-region found, print a coordinate i and j separated by a space character in a line. Print the coordinates in ascending order of the row numbers (i), or the column numbers (j) in case of a tie.

Constraints

1 ≤ H, W ≤ 1000

1 ≤ R, C ≤ 1000

The input consists of alphabetical characters and digits

Sample Input 1

4 5
00010
00101
00010
00100
3 2
10
01
10

Sample Output 1

0 3
1 2

Solution in Ruby (judge verdict: Memory Limit Exceeded)

# just a copy of http://judge.u-aizu.ac.jp/onlinejudge/review.jsp?rid=2232033#1
h, w = gets.split.map(&:to_i)
hw = []
h.times{|i|
  hw[i] = gets.chomp.split("").map(&:ord)
}
r, c = gets.split.map(&:to_i)
rc = []
r.times{|i|
  rc[i] = gets.chomp.split("").map(&:ord)
}
exit if r > h || c > w

A = 9999973
B = 950527

target = 0
r.times{|i|
  key = 0
  c.times{|j|
    key = key*B+rc[i][j]
  }
  target = target*A+key
}
C = B**c
t = Array.new(h){Array.new(w)}
t2 = Array.new(h){Array.new(w)}
h.times{|i|
  key = 0
  w.times{|j|
    key = key*B+hw[i][j];
    key -= hw[i][j-c]*C if j-c >= 0
    t[i][j] = key
    t2[i][j] = t[i][j]
  }
}

D = A**r

h.times{|i|
  w.times{|j|
    t[i][j] += t[i-1][j]*A if i > 0
    t[i][j] -= t2[i-r][j]*D if i-r >= 0
    if t[i][j] == target then
      if i-r+1 >= 0 && j-c+1>= 0 then
        puts "#{i-r+1} #{j-c+1}"
      end
    end
  }
}