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