#!/bin/python3

N, M, L = map(int, input().split())
s = [[0]+list(map(int, input().split())) for _ in range(N)]

done = [False]*N
calls = [0]*12
for ins in range(M):
  X = int(input())
  if X != 12:
    calls[X] += 1
  else:
    dist = [sum(H*s[i][H]*calls[H] for H in range(1,12)) for i in range(N)]
    D = [min(x,L-x) for x in dist]
    side = ["R" if x >= L-x else "L" for x in dist]
    
    catch_R = [i for i in range(N) if not done[i] and L < 4*D[i] and side[i] == "R"]
    catch_L = [i for i in range(N) if not done[i] and L < 4*D[i] and side[i] == "L"]
    catch_all = catch_R + catch_L
    catch = None if not catch_all else catch_all[0]+1
    
    new_safe = [i+1 for i in range(N) if not done[i] and side[i] == "R" and i+1 != catch]

    # print(dist, calls)

    if new_safe: print(*new_safe)
    else: print(None)
    print(catch)

    for i in new_safe: done[i-1] = True
    if catch is not None: done[catch-1] = True

    calls = [0]*12



    
    
