#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;
}