'''读取数据'''
k, m, n, s = map(int, input().split())
x = list(map(float, input().split()))
# print(x)
samples = []
while True:
    try:
        line = input()
        sample = []
        if line:  # 如果不是空行
            sample.extend(map(float,line.split()))
            samples.append(sample)
    except EOFError:
        break
# print(samples)
'''计算k近邻距离'''
dis = list() # 距离
c = list() # 每类样本数
for i in range(m): # 遍历样本
    d = 0
    for j in range(n): # 计算距离
        d += (x[j]-samples[i][j])**2
    dis.append([d,samples[i][-1]])
dis.sort(key=lambda x:x[0])
dis_last = dis[0:k] # k近邻距离
'''类别转为整形'''
for sub_dis in dis_last:
    sub_dis[1] =int(sub_dis[1])
# print(dis_last)
'''计算每类样本数最值'''
for i in range(s): # 类别匹配样本数
    c.append(0)
    for sub_dis in dis_last:
        if sub_dis[1] == i:
            c[i] += 1
# print(c)
max_v = max(c) # 最多类别样本数
max_indices = [i for i, value in enumerate(c) if value == max_v] # 最多类别
# print(max_indices)
'''样本数最值加最短距离联合判断'''
stop = False
for sub_dis in dis_last:
    if stop == True:
        break
    for max_indece in max_indices:
        if sub_dis[1] == max_indece:
            print(f'{max_indece} {max_v}')
            stop = True
            break