만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

함수열과 쿼리

면접 대비

시간 제한2초메모리 제한1024 MB

요약
1부터 5까지의 순열 n개가 주어집니다. 각 질의는 구간 합성이 목표 순열과 같아지도록 f_u를 바꾸고, 바뀐 순열을 출력합니다.
난이도

보통10점 중 5점

유형
세그먼트 트리, 배열, 구현
정답자
아직 제출이 없습니다

문제

함수열은 함수들을 순서대로 늘어놓은 것입니다. {fi}i∈N\{f_i\}_{i\in\mathbb{N}}로 정의하며, 나열하면 f1,f2,f3,…f_1, f_2, f_3, \ldots와 같이 표현합니다.

함수의 합성 ∘\circ는 (f∘g)(x)=f(g(x))(f\circ g)(x) = f(g(x))로 정의합니다. 합성이 여러 개 이어지면 오른쪽부터 차례로 계산합니다.

(f1∘f2∘f3)(x)=(f1∘f2)(f3(x))=f1(f2(f3(x)))(f_1\circ f_2 \circ f_3)(x) = (f_1 \circ f_2)(f_3(x)) = f_1(f_2(f_3(x)))

예를 들어 f1(3)=2f_1(3) = 2, f2(1)=3f_2(1) = 3, f3(2)=1f_3(2) = 1이면 다음과 같습니다.

(f1∘f2∘f3)(2)=f1(f2(f3(2)))=f1(f2(1))=f1(3)=2(f_1\circ f_2 \circ f_3)(2) = f_1(f_2(f_3(2))) = f_1(f_2(1)) = f_1(3) = 2

주어지는 함수 nn개는 차례대로 다음 조건을 만족합니다.

  • 1≤x≤51 \le x \le 5를 만족하는 자연수 xx에 대해 f(x)f(x)는 자연수이고, 1≤f(x)≤51 \le f(x) \le 5입니다.
  • x≠yx \ne y이면 f(x)≠f(y)f(x) \ne f(y)입니다.

즉, 각 함수는 1부터 5까지로 이루어진 순열입니다.

이어서 쿼리가 주어집니다. 각 쿼리는 uu aa bb y1y_1 y2y_2 y3y_3 y4y_4 y5y_5의 형태이며, a≤u≤ba \le u \le b를 만족합니다. 이는 g=fa∘fa+1∘⋯∘fbg = f_a\circ f_{a+1}\circ \cdots \circ f_b가 모든 1≤i≤51 \le i \le 5에 대해 g(i)=yig(i) = y_i를 만족하도록 fuf_u를 변경했음을 뜻합니다.

각 쿼리마다 fuf_u가 어떤 함수로 바뀌는지 구합니다. 변경된 fuf_u는 그대로 유지되므로 쿼리는 누적됩니다. fuf_u가 바꾸지 않아도 이미 쿼리를 만족한다면 그대로 둡니다.

입력

첫 줄에 nn (3≤n≤100 0003 \le n \le 100\,000)이 주어집니다. 이어지는 nn개의 줄에는 각 fif_i가 fi(1)f_i(1), fi(2)f_i(2), fi(3)f_i(3), fi(4)f_i(4), fi(5)f_i(5) 순서로 공백으로 구분되어 주어집니다.

n+2n+2번째 줄에 쿼리의 수 qq (1≤q≤100 0001 \le q \le 100\,000)가 주어집니다. 이어지는 qq개의 줄에는 각각 uu aa bb y1y_1 y2y_2 y3y_3 y4y_4 y5y_5가 주어집니다. 이때 1≤a≤u≤b≤n1 \le a \le u \le b \le n이고, i≠ji \ne j이면 yi≠yjy_i \ne y_j입니다.

출력

각 쿼리를 적용한 뒤의 fu(1)f_u(1), fu(2)f_u(2), fu(3)f_u(3), fu(4)f_u(4), fu(5)f_u(5)를 공백으로 구분하여 한 줄에 하나씩 출력합니다. fuf_u가 바뀌지 않았다면 같은 형식으로 출력합니다.

예제1

  1. 예제 1

    입력
    4
    1 3 2 4 5
    2 3 1 5 4
    2 3 4 5 1
    3 4 5 1 2
    1
    3 2 4 1 2 3 4 5
    
    예상 출력
    5 4 3 1 2