ByteGuy는 자물쇠가 달린 금고를 가지고 있습니다. 이 자물쇠에는 손잡이가 n개 있고, 자물쇠 안에는 같은 개수인 빗장이 n개 숨겨져 있습니다. 각 손잡이와 각 빗장은 0부터 p−1까지 번호가 붙은 p가지 위치 중 하나에 놓일 수 있으며, p는 소수입니다.
모든 빗장이 위치 0에 놓이는 순간 자물쇠가 열립니다.
i번 손잡이를 한 칸 돌리면(위치 0에서 1로, 1에서 2로, ..., p−1에서 다시 0으로) j번 빗장이 ci,j칸만큼 돌아갑니다. 즉 j번 빗장이 위치 l에 있었다면 (l+ci,j)modp로 이동합니다.
ByteGuy는 여는 방법을 잊어버렸습니다. 3D 스캐너로 숨겨진 모든 빗장의 현재 위치를 읽을 수 있고, 이 자물쇠는 정확히 하나의 손잡이 배열에서만 열리도록 만들어져 있습니다.
손잡이의 현재 위치, 빗장의 현재 위치, 그리고 각 ci,j 값이 주어질 때 자물쇠를 여는 손잡이 배열을 출력하세요.
첫째 줄에 정수 두 개가 주어집니다. 손잡이의 개수 n (1≤n≤300)과 위치의 개수인 소수 p (3≤p≤40000)입니다.
둘째 줄에는 0…p−1 범위의 정수 n개가 주어지며, 각 손잡이의 현재 위치입니다.
셋째 줄에는 0…p−1 범위의 정수 n개가 주어지며, 각 빗장의 현재 위치입니다.
이어지는 n개의 줄은 각 손잡이를 설명합니다. i번째 줄에는 정수 n개 ci,0,ci,1,…,ci,n−1이 주어지며 0≤ci,j<p입니다.
0…p−1 범위의 정수 n개를 공백 하나로 구분하여 한 줄에 출력합니다. 자물쇠를 여는 손잡이의 최종 위치입니다.