#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
    int n, m, k, l, d;
    cin >>n>>m>>k>>l>>d;
    vector<int> row_count(n,0);    
    vector<int> col_count(m,0);    

    for (int i = 0; i < d; ++i) {
        int xi, yi, pi, qi;
        cin >>xi>>yi>>pi>>qi;
        if (xi == pi) { 
            int col = min(yi, qi);
            col_count[col]++;
        } else if (yi == qi) { 
            int row = min(xi, pi);
            row_count[row]++;
        }
    }

    vector<pair<int, int>> row_indices;
    for (int i = 1; i < n; ++i) {
        row_indices.emplace_back(row_count[i], i);
    }
    sort(row_indices.begin(), row_indices.end(), [](const pair<int, int>& a,
    const pair<int, int>& b) {
        if (a.first != b.first) return a.first > b.first;
        return a.second < b.second;
    });
    sort(row_indices.begin(), row_indices.begin() + k, [](const pair<int, int>& a,
    const pair<int, int>& b) {
        return a.second < b.second;
    });
    for (int i = 0; i < k; ++i) {
        if (i != 0) cout << " ";
        cout << row_indices[i].second;
    }
    cout << endl;

    vector<pair<int, int>> col_indices;
    for (int i = 1; i < m; ++i) {
        col_indices.emplace_back(col_count[i], i);
    }
    sort(col_indices.begin(), col_indices.end(), [](const pair<int, int>& a,
    const pair<int, int>& b) {
        if (a.first != b.first) return a.first > b.first;
        return a.second < b.second;
    });
    sort(col_indices.begin(), col_indices.begin() + l, [](const pair<int, int>& a,
    const pair<int, int>& b) {
        return a.second < b.second;
    });
    for (int i = 0; i < l; ++i) {
        if (i != 0) cout << " ";
        cout << col_indices[i].second;
    }

    cout << endl;
    return 0;
}