import sys

line = sys.stdin.read().splitlines()
line_iter=iter(line)
input = lambda :next(line_iter)

def read(t=int):
    return list(map(t,input().split()))

N,M,K=read()
xs=[read() for _ in range(N)]
xt=read()

INF=10**18

def getdis(a,b)->int:
    res=0
    for l,r in zip(a,b):
        res+=(l-r)**2
    return res

def dimsum(a,b)->list[int]:
    res=[]
    for l,r in zip(a,b):
        res.append(l+r)
    return res

def dimdiv(a:list[int],b)->list[int]:
    res=[]
    for e in a:
        res.append(e//b)
    return res

def main():
    updated=True
    center=[xs[i] for i in range(K)]
    target=None # 每个i的元素对应的center编号

    while updated:
        new_target=[]
        center_avail=[N//K+1]*(N%K)+[N//K]*(K-N%K)

        for xidx,e in enumerate(xs):
            mindis=INF
            cidx=None
            for idx,c in enumerate(center):
                if center_avail[idx]<=0:
                    continue # 已经满了
                dis=getdis(e,c)
                if dis<mindis:
                    mindis=dis
                    cidx=idx
            assert cidx is not None,"1?"
            new_target.append(cidx)
            center_avail[cidx]-=1

        target=new_target

        new_center=[[0]*M for _ in range(K)]
        # update center
        for idx,e in enumerate(xs):
            cidx=target[idx]
            new_center[cidx] = dimsum(new_center[cidx],e)
        
        for i in range(N%K):
            new_center[i]=dimdiv(new_center[i],N//K+1)
        for i in range(N%K,K):
            new_center[i]=dimdiv(new_center[i],N//K)
        
        updated= center!=new_center or target!=new_target
        center=new_center
    
    
    center.sort()
    mindis=INF
    cidx=None
    for idx,c in enumerate(center):
        dis=getdis(xt,c)
        if dis<mindis:
            mindis=dis
            cidx=idx
    assert cidx is not None, "2?"
    for row in center:
        print(" ".join([str(e) for e in row]))
    print(cidx+1)
    
main()