#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ull = unsigned long long;
using pi = pair<int, int>;
using pl = pair<ll, ll>;
const ll N = 1e6 + 10;
const ll INF = 1e18;
const ll M = 1e5 + 10;
const ll mod = 1e9 + 7;
const ll L = 31;
const ll hp = 293;
ll ask(ll i) {
  cout << "? ";
  cout << i;
  cout << endl;
  cout.flush();
  ll x;
  cin >> x;
  return x;
}
ll _pow(ll a, ll b) {
  if (b == 0) {
    return 1;
  }
  if (b == 1) {
    return a % mod;
  }
  ll k = _pow(a, b / 2);
  k %= mod;
  k = k * k;
  k %= mod;
  if (b % 2 == 1) {
    k *= a;
    k %= mod;
  }
  return k;
}
ll spf[N];
ll seive() {
  for (ll i = 0; i < N; i++) {
    spf[i] = i;
  }
  for (ll i = 2; i <= sqrt(N); i++) {
    if (spf[i] == i) {
      for (ll j = i * i; j < N; j += i) {
        if (spf[j] == j) {
          spf[j] = i;
        }
      }
    }
  }
  return 0;
}
ll fact[1005];
ll factorial() {
  fact[0] = 1;
  for (ll i = 1; i < 1005; i++) {
    fact[i] = (fact[i - 1] % mod) * (i % mod);
    fact[i] %= mod;
  }
  return 0;
}
ll gcdExtended(ll a, ll b, ll* x, ll* y) {
  if (a == 0) {
    *x = 0, *y = 1;
    return b;
  }
  ll x1, y1;
  ll gcd = gcdExtended(b % a, a, &x1, &y1);
  *x = y1 - (b / a) * x1;
  *y = x1;
  return gcd;
}
ll modinverse(ll a, ll m) {
  ll x, y;
  gcdExtended(a, m, &x, &y);
  ll res = (x % m + m) % m;
  return res;
}
ll ncr(ll a, ll b) {
  ll x = fact[a];
  ll y = fact[b];
  ll z = fact[a - b];
  y %= mod;
  z %= mod;
  y = modinverse(y, mod);
  z = modinverse(z, mod);
  y %= mod;
  z %= mod;
  x %= mod;
  x = x * y;
  x %= mod;
  x = x * z;
  x %= mod;
  return x;
}
ll solve() {
  ll n, m, x, y;
  cin >> n >> m >> x >> y;
  vector<pair<ll, ll>> ans;
  ans.push_back({x, y});
  for (int i = y + 1; i <= m; i++) {
    ans.push_back({x, i});
  }
  for (int i = y - 1; i >= 1; i--) {
    ans.push_back({x, i});
  }
  int first = x % 2;
  int last;
  for (int i = x - 1; i >= 1; i--) {
    if (first == x % 2) {
      last = 0;
      for (int j = 1; j <= m; j++) {
        ans.push_back({i, j});
      }
    } else {
      last = 1;
      for (int j = m; j >= 1; j--) {
        ans.push_back({i, j});
      }
    }
    first = 1 - first;
  }
  for (int i = x + 1; i <= n; i++) {
    if (last == 0) {
      for (int j = m; j >= 1; j--) {
        ans.push_back({i, j});
      }
    } else {
      for (int j = 1; j <= m; j++) {
        ans.push_back({i, j});
      }
    }
    last = 1 - last;
  }
  for (auto j : ans) {
    cout << j.first << " " << j.second << '\n';
  }
  return 0;
}
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  solve();
  return 0;
}
