const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void (async function () {
let [n, m, k, l, d] = (await readline()).split(" ").map(Number);
let [x, y, p, q] = [0, 0, 0, 0];
let pai = new Map();
let lie = new Map();
for (let i = 0; i < d; i++) {
[x, y, p, q] = (await readline()).split(" ").map(Number);
if (x == p) {
if (!lie.has(Math.min(y, q))) {
lie.set(Math.min(y, q), 1);
} else {
lie.set(Math.min(y, q), lie.get(Math.min(y, q)) + 1);
}
}
if (y == q) {
if (!pai.has(Math.min(x, p))) {
pai.set(Math.min(x, p), 1);
} else {
pai.set(Math.min(x, p), pai.get(Math.min(x, p)) + 1);
}
}
}
let arrpai = [];
let arrlie = [];
for (let [key, value] of pai) {
arrpai.push([key, value]);
}
for (let [key, value] of lie) {
arrlie.push([key, value]);
}
result = "";
arrpai
.sort((a, b) => {
return b[1] - a[1];
})
.slice(0, k)
.sort((a, b) => {
return a[0] - b[0];
})
.forEach((val) => {
result += val[0] + " ";
});
console.log(result);
result = "";
arrlie
.sort((a, b) => {
return b[1] - a[1];
})
.slice(0, l)
.sort((a, b) => {
return a[0] - b[0];
})
.forEach((val) => {
result += val[0] + " ";
});
console.log(result);
})();