#include<bits/stdc++.h>
using namespace std;
using ll=long long;
using ull=unsigned long long;
using i128=__int128_t;
using u128=__uint128_t;
using ld=long double;
struct node
{
int num;
int cop=0;
};
bool cmp(node x,node y)
{
return x.cop>y.cop;
}
void solve()
{
int n,m,k,l,d,x,y,p,q;//很简单的贪心思想 让每条横线和竖线尽可能切割多的“交头接耳”对即可
cin >> n >> m >> k >> l >> d;
vector<node>vk(n),vl(m);
for(int i=0;i<n;i++) vk[i].num=i;
for(int i=0;i<m;i++) vl[i].num=i;
while(d--)
{
cin >> x >> y >> p >> q;
if(x==p) vl[min(y,q)].cop++;
else if(y==q) vk[min(x,p)].cop++;
}
//for(int i=1;i<n;i++) cout << vk[i].num << " " << vk[i].cop << "\n";
sort(vk.begin()+1,vk.end(),cmp);
//for(int i=1;i<n;i++) cout << vk[i].num << " " << vk[i].cop << "\n";
sort(vl.begin()+1,vl.end(),cmp);
vector<int>lgk,lgl;
int cntk=1,cntl=1;
while(k--)
{
lgk.push_back(vk[cntk].num);
cntk++;
}
while(l--)
{
lgl.push_back(vl[cntl].num);
cntl++;
}
sort(lgk.begin(),lgk.end());
sort(lgl.begin(),lgl.end());
for(int i=0;i<lgk.size();i++) cout << lgk[i] << " ";
cout << "\n";
for(int i=0;i<lgl.size();i++) cout << lgl[i] << " ";
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t=1;
//cin >> t;
while(t--)
{
solve();
}
return 0;
}