함수열이란 함수들의 열로 f_i_i∈N의 형태로 정의되며, 나열하면 f_1,f_2,f_3,... 과 같이 표현됩니다.
함수의 합성 "∘"는 (f∘g)(x)=f(g(x))의 식으로 정의됩니다. 이것도 마찬가지로 여러 개로 이어지면, (f_1∘f_2∘f_3)(x)=(f_1∘f_2)(f_3(x))=f_1(f_2(f_3(x)) 이렇게 표현됩니다.
예를 들어 f_1(3)=2,f_2(1)=3,f_3(2)=1 이라면 (f_1∘f_2∘f_3)(2)=f_1(f_2(f_3(2))=f_1(f_2(1))=f_1(3)=2와 같이 계산할 수 있습니다.
문제에서는 다음 조건을 만족하는 함수 n개가 차례대로 주어집니다.
즉, 1 부터 5 까지로 이루어진 순열이 n개 주어집니다.
이어서 다음과 같은 쿼리가 주어집니다.
각 쿼리에서 a와 b는 a≤u≤b를 만족하게 주어지며, g=(f_a∘f_a+1∘f_a+2∘...∘f_b)인 g가 1≤i≤5 인 i에 대해 g(i)=y_i가 되도록 f_u를 변경했음을 의미합니다.
각각의 쿼리마다 f_u가 어떤 함수로 변했는지 구합니다.
단, 쿼리에 의해 변한 f_u는 그대로 유지됩니다. 즉, 쿼리가 누적됩니다.
첫 번째 줄에 함수열의 길이 n(3≤n≤100,000)이 주어집니다. 두 번째 줄부터 n+1번째 줄까지 함수열이 주어집니다. 각 i+1번째 줄에는 f_i가 주어지며, f_i(1), f_i(2), f_i(3), f_i(4), f_i(5)가 차례대로 공백으로 구분되어 주어집니다.
n+2번째 줄에 쿼리의 수 q(1≤q≤100,000)가 주어집니다. 이후 n+3번째 줄 부터 n+q+2번째 줄까지 문제에서 제시된 쿼리가 주어집니다.
각 쿼리는 줄마다
u a b y_1 y_2 y_3 y_4 y_5
의 형태로 주어지며 1≤a≤u≤b≤n이고 i=j 이면 y_i=y_j임을 만족하게 주어집니다.
각 쿼리마다 f_u(1), f_u(2), f_u(3), f_u(4), f_u(5)가 어떤 값으로 변했는지 차례대로 공백으로 구분하여 출력합니다. 경우에 따라서는 f_u가 변하지 않았을 때에 쿼리를 만족할 수 있습니다. 만약 f_u가 변경되지 않았어도 같은 형식으로 출력합니다.