// NOTE: it is recommended to use this even if you don't understand the following code.

#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

int main() {
    // uncomment the two following lines if you want to read/write from files
    // freopen("input.txt", "r", stdin);
    // freopen("output.txt", "w", stdout);

    int N, M;
    assert(2 == scanf("%d %d", &N, &M));

    int *C = (int *)malloc(M * sizeof(int));
    for (int i = 0; i < M; i++) {
        assert(1 == scanf("%d", &C[i]));
    }

    int *K = (int *)malloc(N * sizeof(int));

    int **P = (int **)malloc(N * sizeof(int *));
    int **S = (int **)malloc(N * sizeof(int *));

    for (int i = 0; i < N; i++) {
        assert(1 == scanf("%d", &K[i]));

        P[i] = (int *)malloc(K[i] * sizeof(int));
        S[i] = (int *)malloc(K[i] * sizeof(int));

        for (int j = 0; j < K[i]; j++) {
            assert(2 == scanf("%d %d", &P[i][j], &S[i][j]));
        }
    }

    int *T = (int *)malloc(M * sizeof(int));


    // INSERT YOUR CODE HERE


    for (int i = 0; i < M; ++i) {
        printf("%d ", T[i]);
    }
    printf("\n");

    // free memory
    for (int i = 0; i < N; i++) {
        free(P[i]);
        free(S[i]);
    }
    free(P);
    free(S);
    free(K);
    free(C);
    free(T);

    return 0;
}
