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]))