n,m,Sx,Sy=map(int,input().split())
print(Sx,Sy)
for j in range(m):
if j!=Sy-1:
print(Sx,j+1)
for j in range(m-1,-1,-1):
if j%2==0:
for i in range(n):
if i!=Sx-1:
print(i+1,j+1)
else:
for i in range(n-1,-1,-1):
if i!=Sx-1:
print(i+1,j+1)
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <map>
#include <math.h>
#include <set>
#include <numeric>
#include <stack>
using namespace std;
using ll = long long;
using ull = unsigned long long;
#define MOD ll(1e9 + 7)
void solve() {
int n, m, x, y;
cin >> n >> m >> x >> y;
int lastY = 0;
for (int i = 0; i < n; i++) {
int xx = (((x - 1 + i) % n) + 1);
for (int j = 0; j < m; j++) {
lastY = ((y - 1 + j) % m) + 1;
cout << xx << " " << lastY << "\n";
}
y = lastY;
}
}
int main() {
solve();
//cout << solve();
//int t;
//cin >> t;
//while (t--) {
// /*solve();
// cout << "\n";*/
// cout << solve() << "\n";
//}
}
74. Search a 2D Matrix | 71. Simplify Path |
62. Unique Paths | 50. Pow(x, n) |
43. Multiply Strings | 34. Find First and Last Position of Element in Sorted Array |
33. Search in Rotated Sorted Array | 17. Letter Combinations of a Phone Number |
5. Longest Palindromic Substring | 3. Longest Substring Without Repeating Characters |
1312. Minimum Insertion Steps to Make a String Palindrome | 1092. Shortest Common Supersequence |
1044. Longest Duplicate Substring | 1032. Stream of Characters |
987. Vertical Order Traversal of a Binary Tree | 952. Largest Component Size by Common Factor |
212. Word Search II | 174. Dungeon Game |
127. Word Ladder | 123. Best Time to Buy and Sell Stock III |
85. Maximal Rectangle | 84. Largest Rectangle in Histogram |
60. Permutation Sequence | 42. Trapping Rain Water |
32. Longest Valid Parentheses | Cutting a material |
Bubble Sort | Number of triangles |
AND path in a binary tree | Factorial equations |