#include <bits/stdc++.h>
using namespace std;
template <typename T, typename V>
void __print(const pair<T, V> &x) {
  cout << '{';
  __print(x.first);
  cout << ',';
  __print(x.second);
  cout << '}';
}
template <typename T>
void __print(const T &x) {
  int f = 0;
  cout << '{';
  for (auto &i : x) cout << (f++ ? "," : ""), __print(i);
  cout << "}";
}
void _print() { cout << "]\n"; }
template <typename T, typename... V>
void _print(T t, V... v) {
  __print(t);
  if (sizeof...(v)) cout << ", ";
  _print(v...);
}
int32_t main() {
  long long int n, m, a, b;
  cin >> n >> m >> a >> b;
  long long int vis[n][m];
  memset(vis, 0, sizeof(vis));
  vis[a][b] = 1;
  if (b == 1) {
    for (long long int i = 0; i < (long long int)(m); ++i) {
      cout << a << " " << i + 1 << endl;
    }
  } else {
    cout << a << " " << b << endl;
    for (long long int i = m - 1; i >= 0; i--) {
      if (vis[a][i + 1] == 1) continue;
      cout << a << " " << i + 1 << endl;
      vis[a][i + 1] = 1;
    }
  }
  long long int i = 0;
  long long int tr = 0;
  if (b == 1)
    tr = m - 1;
  else
    tr = 0;
  while (1) {
    if (i + 1 == a) {
      i++;
      continue;
    }
    if (tr == 0) {
      for (long long int j = 0; j < (long long int)(m); ++j) {
        cout << i + 1 << " " << j + 1 << endl;
      }
      i++;
      tr = m - 1;
    } else {
      for (long long int j = tr; j >= 0; j--) {
        cout << i + 1 << " " << j + 1 << endl;
      }
      i++;
      tr = 0;
    }
    if (i == n) break;
  }
}
