n,m,p,k = map(int,input().split()) if n % m != 0 or p > m or p*n//m < k: print("error") else: arr = list(map(float,input().split())) g = int(n // m) group = {i:[] for i in range(m)} # 记录概率 node = {i:[] for i in range(m)} # 记录编号 for i in range(n): index = i // g group[index].append(arr[i]) node[index].append(i) for key in group.keys(): group[key] = max(group[key]) sort_group = sorted(group.items(),key=lambda x:[-x[1],x[0]]) sort_group_p = sort_group[:p] group_id = {i[0] for i in sort_group_p} # 获取保留的组号 zj_id = [] for i in range(m): if i in group_id: zj_id += node[i] # 提取保留组的专家编号 final_arr = sorted({i:arr[i] for i in zj_id}.items(),key=lambda x:[-x[1],x[0]])[:k] final_zj_id = sorted([i[0] for i in final_arr]) print(" ".join([str(i) for i in final_zj_id]))