program tym;
var f,m,n,k,l,d,i,j,x,y,x1,y1:longint;
tmp,col,row:array[1..1000] of longint;
s,s1:ansistring;
function min(a,b:longint):longint;
begin
if a<b then exit(a); exit(b);
end;
procedure qsort(m,n:Longint);
var ii,jj,mid,t:longint;
begin
ii:=m; jj:=n; mid:=tmp[(ii+jj)div 2];
repeat
while tmp[ii]>mid do inc(ii);
while tmp[jj]<mid do dec(jj);
if ii<=jj then begin
t:=tmp[ii]; tmp[ii]:=tmp[jj]; tmp[jj]:=t;
inc(ii); dec(jj);
end;
until ii>jj;
if m<jj then qsort(m,jj);
if ii<n then qsort(ii,n);
end;
begin
readln(m,n,k,L,d);
fillchar(row,sizeof(row),0);
fillchar(col,sizeof(col),0);
for i:=1 to d do begin
readln(x,y,x1,y1);
if x=x1 then inc(col[min(y,y1)]) else inc(row[min(x,x1)]);
end;
j:=0;
for i:=1 to m do begin
if row[i]>0 then begin
inc(j);
tmp[j]:=row[i];
end;
end;
qsort(1,j);
f:=tmp[k];
i:=1; j:=0;
while (i<=n)and(j<k) do begin
if row[i]>=f then begin
write(i);
inc(j);
if j<>k then write(' ');
end;
inc(i);
end;
writeln;
j:=0;
for i:=1 to n do begin
if col[i]>0 then begin
inc(j);
tmp[j]:=col[i];
end;
end;
qsort(1,j);
f:=tmp[l];
i:=1; j:=0;
while (i<=m) and (j<L) do begin
if col[i]>=f then begin
write(i);
inc(j);
if j<>l then write(' ');
end;
inc(i);
end;
end.
/**************************************************************
Problem: 2277
User: admin
Language: Pascal
Result: Wrong Answer
****************************************************************/