합성함수와 쿼리

시간 제한1초메모리 제한512 MB

요약
함수 f가 1부터 m까지 정의될 때, 각 질의 n, x에 대해 f를 n번 합성한 f^n(x)를 구한다.
난이도

어려움10점 중 8점

유형
이분 탐색, 그래프, 구현, 수학
정답자
아직 제출이 없습니다

문제

함수 f:{1,2,…,m}→{1,2,…,m}f : \{1, 2, \ldots, m\} \to \{1, 2, \ldots, m\}가 있다. 이때 fn:{1,2,…,m}→{1,2,…,m}f^n : \{1, 2, \ldots, m\} \to \{1, 2, \ldots, m\}을 다음과 같이 정의하자.

  • f1(x)=f(x)f^1(x) = f(x)
  • fn+1(x)=f(fn(x))f^{n+1}(x) = f(f^n(x))

예를 들어 f4(1)=f(f(f(f(1))))f^4(1) = f(f(f(f(1))))이다.

nn과 xx가 주어질 때 fn(x)f^n(x)를 계산하는 쿼리를 수행하는 프로그램을 작성하시오.

입력

첫 줄에 정수 mm이 주어진다. (1≤m≤200,0001 \le m \le 200,000)

다음 줄에 f(1),f(2),…,f(m)f(1), f(2), \ldots, f(m)이 차례대로 주어진다.

다음 줄에 쿼리의 개수 QQ가 주어진다. (1≤Q≤200,0001 \le Q \le 200,000)

다음 QQ개의 줄에 각각 정수 nn과 xx가 주어진다. (1≤n≤500,0001 \le n \le 500,000; 1≤x≤m1 \le x \le m)

출력

주어지는 n,xn, x마다 fn(x)f^n(x)를 출력한다.

예제1

  1. 예제 1

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