#include <stdio.h>
int main() {
int m, n, k, t,d;
scanf("%d%d%d%d%d", &m, &n, &k, &t,&d);//m行 n列 k行 t 列 d对
int a[3000][4]={0};//每对学生坐标
int f[2000] = { 0 };
int g[2000] = { 0 };//桶排
for (int i = 1; i <= d; i++) {
for (int j = 0; j < 4; j++) {
scanf("%d", &a[i][j]); //每对学生四个数据
}
}
int x[3000][2]={0}, y[3000][2] = {0};
for (int i = 1; i <= d; i++) {
if (a[i][1] == a[i][3]) { x[fun(a[i][0], a[i][2])][1]++; }
if (a[i][0] == a[i][2]) { y[fun(a[i][1],a[i][3])][1]++; }
}
for (int i = 1; i <= m; i++) { //x行 y列 x[i][0]=i行 y[i][0]=i列
x[i][0] = i;
}
for (int j = 1; j <= n; j++) {
y[j][0] = j;
}
for (int i = 1; i < m; i++) { //进行从大到小的排序
for (int j = i + 1; j <= m; j++) {
if (x[j][1] > x[i][1]) {
int h = x[i][1];
x[i][1] = x[j][1];
x[j][1] = h;
int m = x[i][0];
x[i][0] = x[j][0];
x[j][0] = m;
}
}
}
for (int i = 1; i < n; i++) {
for (int j = i + 1; j <= n; j++) {
if (y[j][1]> y[i][1]) {
int h = y[i];
y[i][1] = y[j][1];
y[j][1] = h;
int m = y[i][0];
y[i][0] = y[j][0];
y[j][0] = m;
}
}
}
for (int i = 1; i <= k; i++) {
f[x[i][0]]++;
}
for (int i = 1; i <= t; i++) {
g[y[i][0]]++;
}
for (int i = 1; i <= m; i++) {
if (f[i])
printf("%d ", i);
}
printf("\n");
for (int i = 1; i <= n; i++) {
if (g[i])
printf("%d ", i);
}
return 0;
}
int fun(int q,int w) { //最小行数
return q < w ? q : w;
}