import math


def k_means_fast(K, R, M, centers, data):
    for _ in range(R):
        # 1. 初始化 K 个簇的容器
        groups = [[] for _ in range(K)]

        # 2. 遍历每个数据点,直接分配到最近的簇
        for point in data:
            # 利用列表推导式计算点到所有中心的距离,并用 min 找出最小距离对应的索引
            distances = [math.dist(point, c) for c in centers]
            closest_idx = distances.index(min(distances))
            groups[closest_idx].append(point)

        # 3. 重新计算中心点
        for i in range(K):
            if not groups[i]:
                continue  # 如果该簇没有分配到点,保持原中心不变

            # 核心技巧:zip(*groups[i]) 会把所有点的第0维、第1维...分别打包
            # 例如点是 [[1,2,3], [4,5,6]] -> zip后变成 [(1,4), (2,5), (3,6)]
            centers[i] = [sum(dim) / len(groups[i]) for dim in zip(*groups[i])]

    return centers


if __name__ == "__main__":
    K = int(input())
    centers = [[float(x) for x in input().split()] for _ in range(K)]

    R = int(input())
    M = int(input())
    data = [[float(x) for x in input().split()] for _ in range(M)]

    res = k_means_fast(K, R, M, centers, data)

    for row in res:
        print(" ".join(f"{val:.2f}" for val in row))