#include<iostream>
#include<algorithm>
using namespace std;
const int N = 1020;
struct dot {
int x;
int y;
};//结构体 x储存大小 y储存原本的位置 方便排序后输出
bool cmp( dot a,dot b){
return a.x > b.x ;//true -> do not swap;
//false -> swap;
}
int main ()
{
int m,n,k,l,d;
cin >>m>>n>>k>>l>>d;//m行n列 k个横条 l个竖条 d组交头接耳
dot col[N];//列
dot row[N];//行
for (int i=1;i<=m;i++) row[i].y=i;
for (int i=1;i<=n;i++) col[i].y=i;
for (int i=0;i<d;i++)
{
int x1,y1,x2,y2;
scanf("%d %d %d %d",&x1,&y1,&x2,&y2);
if(x1==x2) {//说话的人在同一行
int num = min(y1,y2);
(col[num].x)++;
}
if(y1==y2){//说话的人在同一列
int num = min(x1,x2);
(row[num].x)++;
}
}
sort(col,col+n+1,cmp);
sort(row,row+m+1,cmp);
for(int i=0;i<k;i++)
{
printf("%d",row[i].y);
if(i!=k-1) printf(" ");
}
cout << endl;
for(int i=0;i<l;i++)
{
printf("%d",col[i].y);
if(i!=l-1) printf(" ");
}
return 0;
}