#include <bits/stdc++.h>
using namespace std;
int n, m, a, b;
int H[1000][1000];
int T[1000][1000];
int L[1000][1000];
int Q[1000];
bool value[1000][1000];
long long Sum[1000][1000];
pair<long long, pair<int, int> > wo[1000000], wa[1000000];
long long Get(int i, int j) {
  if (i < 0 || j < 0) {
    return 0;
  }
  return Sum[i][j];
}
int main() {
  ios::sync_with_stdio(false);
  cin >> n >> m >> a >> b;
  for (int i = 0; i != n; ++i) {
    for (int j = 0; j != m; ++j) {
      cin >> H[i][j];
    }
  }
  for (int i = 0; i != n; ++i) {
    int tmpH = 0;
    int tmpT = 0;
    for (int j = 0; j != m; ++j) {
      while (tmpH != tmpT && H[i][Q[tmpT - 1]] >= H[i][j]) {
        tmpT--;
      }
      Q[tmpT++] = j;
      while (tmpH != tmpT && j - Q[tmpH] >= b) {
        tmpH++;
      }
      T[i][j] = H[i][Q[tmpH]];
    }
  }
  for (int j = 0; j != m; ++j) {
    int tmpH = 0;
    int tmpT = 0;
    for (int i = 0; i != n; ++i) {
      while (tmpH != tmpT && T[Q[tmpT - 1]][j] >= T[i][j]) {
        tmpT--;
      }
      Q[tmpT++] = i;
      while (tmpH != tmpT && i - Q[tmpH] >= a) {
        tmpH++;
      }
      L[i][j] = T[Q[tmpH]][j];
    }
  }
  memset(Sum, 0, sizeof(Sum));
  for (int i = 0; i != n; ++i) {
    for (int j = 0; j != m; ++j) {
      Sum[i][j] = Get(i, j - 1) + Get(i - 1, j) - Get(i - 1, j - 1) + H[i][j];
    }
  }
  int limit = 0;
  for (int i = a - 1; i != n; ++i) {
    for (int j = b - 1; j != m; ++j) {
      long long tmp =
          Get(i, j) - Get(i - a, j) - Get(i, j - b) + Get(i - a, j - b);
      tmp -= (long long)(L[i][j]) * a * b;
      wo[limit++] = make_pair(tmp, make_pair(i, j));
    }
  }
  sort(wo, wo + limit);
  memset(value, 0, sizeof(value));
  int dem = 0;
  for (int i = 0; i != limit; ++i) {
    int x = wo[i].second.first;
    int y = wo[i].second.second;
    if (value[x][y] || value[x - a + 1][y] || value[x][y - b + 1] ||
        value[x - a + 1][y - b + 1]) {
      continue;
    }
    wa[dem++] = wo[i];
    for (int j = x - a + 1; j <= x; ++j) {
      for (int k = y - b + 1; k <= y; ++k) {
        value[j][k] = true;
      }
    }
  }
  cout << dem << endl;
  for (int i = 0; i != dem; ++i) {
    int x = wa[i].second.first;
    int y = wa[i].second.second;
    cout << x - a + 2 << " " << y - b + 2 << " " << wa[i].first << endl;
  }
  return 0;
}
