import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); // 行数 int m = sc.nextInt(); // 列数 int k = sc.nextInt(); // 横向通道数量 int l = sc.nextInt(); // 纵向通道数量 int d = sc.nextInt(); // 交头接耳的对数 // 统计每个横向通道能隔开的对数 int[] horizontal = new int[n]; // 统计每个纵向通道能隔开的对数 int[] vertical = new int[m]; for (int i = 0; i < d; i++) { int x1 = sc.nextInt(); int y1 = sc.nextInt(); int x2 = sc.nextInt(); int y2 = sc.nextInt(); if (x1 == x2) { // 左右相邻,属于纵向通道 int col = Math.min(y1, y2); vertical[col]++; } else { // 上下相邻,属于横向通道 int row = Math.min(x1, x2); horizontal[row]++; } } // 选择最优的横向通道 List<Integer> hList = new ArrayList<>(); for (int i = 1; i < n; i++) { hList.add(i); } // 按重要性降序排序,重要性相同则按位置升序 Collections.sort(hList, (a, b) -> { if (horizontal[a] != horizontal[b]) { return Integer.compare(horizontal[b], horizontal[a]); } else { return Integer.compare(a, b); } }); // 取前k个并排序 List<Integer> hResult = hList.subList(0, k); Collections.sort(hResult); // 选择最优的纵向通道 List<Integer> vList = new ArrayList<>(); for (int i = 1; i < m; i++) { vList.add(i); } // 按重要性降序排序,重要性相同则按位置升序 Collections.sort(vList, (a, b) -> { if (vertical[a] != vertical[b]) { return Integer.compare(vertical[b], vertical[a]); } else { return Integer.compare(a, b); } }); // 取前l个并排序 List<Integer> vResult = vList.subList(0, l); Collections.sort(vResult); // 输出横向通道 for (int i = 0; i < hResult.size(); i++) { if (i > 0) { System.out.print(" "); } System.out.print(hResult.get(i)); } System.out.println(); // 输出纵向通道 for (int i = 0; i < vResult.size(); i++) { if (i > 0) { System.out.print(" "); } System.out.print(vResult.get(i)); } System.out.println(); } }