import java.util.*;
import java.util.stream.Collectors;

// 注意类名必须为 Main, 不要有任何 package xxx 信息

/*
    思路:
        先找出横向、纵向的“交头接耳”对的数量
        再找出前k个横向最多“交头接耳”对的数量,以及前l个纵向
        完成

    注意:
        2≦n,m≦10^3,0<k<n; 0<l<m; 0<d≦2×min{n×m,2×10^3}
 */

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        Map<Integer, Integer> kmap = new HashMap<>();  // 下标 -> 每行“交头接耳”对数量数量
        Map<Integer, Integer> lmap = new HashMap<>();  // 下标 -> 每列“交头接耳”对数量数量

        while (in.hasNext()) { // 注意 while 处理多个 case
            int n = in.nextInt(), m = in.nextInt(), k = in.nextInt(), l = in.nextInt(), d = in.nextInt();
            int x, y, p, q;
            for (int i = 0; i < d; i++) {
                x = in.nextInt(); y = in.nextInt(); p = in.nextInt(); q = in.nextInt();
                int min_pos;
                if(x == p){ // 同一行,为纵向“交头接耳”对
                    min_pos = Math.min(y, q);
                    if(lmap.containsKey(min_pos)){
                        lmap.replace(min_pos, lmap.get(min_pos)+1);
                    }
                    else{
                        lmap.put(min_pos, 1);
                    }
                }
                else if(y == q){ // 同一列,为横向“交头接耳”对
                    min_pos = Math.min(x, p);
                    if(kmap.containsKey(min_pos)){
                        kmap.replace(min_pos, kmap.get(min_pos)+1);
                    }
                    else{
                        kmap.put(min_pos, 1);
                    }
                }
            }
            // 先对“交头接耳”对数量排序,再对下标排序
            List<Map.Entry<Integer, Integer>> klist = kmap.entrySet().stream().sorted((o1, o2)->
                    o2.getValue() - o1.getValue()
            ).limit(k).sorted((o1, o2)->
                    o1.getKey() - o2.getKey()).collect(Collectors.toList());

            List<Map.Entry<Integer, Integer>> llist = lmap.entrySet().stream().sorted((o1, o2)->
                    o2.getValue() - o1.getValue()
            ).limit(l).sorted((o1, o2)->
                    o1.getKey() - o2.getKey()).collect(Collectors.toList());

            // 输出
            for (Map.Entry<Integer, Integer> Entry : klist) {
                System.out.print(Entry.getKey() + " ");
            }
            System.out.println();
            for (Map.Entry<Integer, Integer> Entry : llist) {
                System.out.print(Entry.getKey() + " ");
            }
            

        }
    }

}