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);
})();