#include <bits/stdc++.h>
using namespace std;
int n, m, a, b, h[1000][1000], t[1000][1000], l[1000][1000], q[1000];
bool v[1000][1000];
long long s[1000][1000];
pair<long long, pair<int, int> > o[1000 * 1000], aw[1000 * 1000];
long long get_s(int i, int j) { return (i < 0 || j < 0) ? 0 : s[i][j]; }
int main() {
  scanf("%d%d%d%d", &n, &m, &a, &b);
  for (int i = 0; i != n; ++i)
    for (int j = 0; j != m; ++j) scanf("%d", &h[i][j]);
  memset(s, 0, sizeof(s));
  for (int i = 0; i != n; ++i)
    for (int j = 0; j != m; ++j)
      s[i][j] =
          get_s(i, j - 1) + get_s(i - 1, j) - get_s(i - 1, j - 1) + h[i][j];
  for (int i = 0; i != n; ++i) {
    deque<int> q;
    for (int j = 0; j != m; ++j) {
      while (!q.empty() && q.front() + b <= j) q.pop_front();
      while (!q.empty() && h[i][q.back()] >= h[i][j]) q.pop_back();
      q.push_back(j);
      l[i][j] = h[i][q.front()];
    }
  }
  for (int i = 0; i != n; ++i)
    for (int j = 0; j != m; ++j) h[i][j] = l[i][j];
  for (int i = 0; i != m; ++i) {
    deque<int> q;
    for (int j = 0; j != n; ++j) {
      while (!q.empty() && q.front() + a <= j) q.pop_front();
      while (!q.empty() && h[q.back()][i] >= h[j][i]) q.pop_back();
      q.push_back(j);
      l[j][i] = h[q.front()][i];
    }
  }
  int sz = 0;
  for (int i = a - 1; i != n; ++i)
    for (int j = b - 1; j != m; ++j) {
      long long temp =
          get_s(i, j) - get_s(i - a, j) - get_s(i, j - b) + get_s(i - a, j - b);
      temp -= (long long)(l[i][j]) * a * b;
      o[sz++] = make_pair(temp, make_pair(i, j));
    }
  sort(o, o + sz);
  memset(v, 0, sizeof(v));
  int ct = 0;
  for (int i = 0; i != sz; ++i) {
    int x = o[i].second.first, y = o[i].second.second;
    if (v[x][y] || v[x - a + 1][y] || v[x][y - b + 1] ||
        v[x - a + 1][y - b + 1])
      continue;
    aw[ct++] = o[i];
    for (int j = x - a + 1; j <= x; ++j)
      for (int k = y - b + 1; k <= y; ++k) v[j][k] = true;
  }
  printf("%d\n", ct);
  for (int i = 0; i != ct; ++i) {
    int x = aw[i].second.first, y = aw[i].second.second;
    printf("%d %d %lld\n", x - a + 2, y - b + 2, aw[i].first);
  }
  return 0;
}
