아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

혹 떼러 갔다 혹 붙여 온다

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

요약
수직 선분들이 트리를 이루며 실시간으로 붙고, 각 질의는 어떤 지점에서 L만큼 위에 있는 선분이 무엇인지 묻습니다. 답은 다음 부착 위치 계산에 다시 쓰입니다.
난이도

보통10점 중 7점

유형
트리, 이분 탐색, 누적 합, DFS
정답자
아직 제출이 없습니다

문제

"혹 떼러 갔다 혹 붙여 온다: 애드 혹"

혹부리 영감은 얼굴에 달린 커다란 혹을 떼고 싶어 도깨비를 찾아갔지만, 장난을 좋아하는 도깨비는 오히려 혹을 더 붙이려고 한다. 편의상 모든 혹은 선분으로 간주하며, 최초에 혹부리 영감에게는 길이가 무한히 긴 00번 혹 한 개가 달려 있다. 도깨비는 항상 모든 혹의 연결 관계가 트리 구조를 이루도록 혹을 붙인다. 즉, 00번 혹을 제외한 모든 혹의 윗부분은 정확히 하나의 혹의 아래에 닿아 있다.

도깨비는 혹을 붙이면서 혹부리 영감에게 "이 혹에서 이만큼 위에는 무슨 혹이 있을까~요?"라는 문제를 낸다. 이 문제를 전부 맞히면 마지막엔 모든 혹을 떼어 주기로 약속하였다. 문제를 푸는 데 자신이 없는 혹부리 영감을 대신하여 여러분이 답을 알려 주자.

혹을 어떻게 붙일지 미리 예측하는 것을 막기 위해, 도깨비가 특이한 방법으로 혹을 붙일 위치를 정한다는 점에 주의하자.

입력

첫째 줄에 도깨비의 행동 횟수 QQ (1≤Q≤150 0001 \le Q \le 150\,000)가 주어진다.

QQ개의 줄에 걸쳐, 도깨비가 하는 행동이 순서대로 "query xx LL" 또는 "ad-hoc kk LL" 형식으로 주어진다. 도깨비가 행동을 하려는 시점에서 혹부리 영감에게 달려 있는 혹의 개수를 MM이라고 하자.

  • "query xx LL": xx번 혹의 아래쪽 끝에서 시작해 혹을 따라 LL만큼 거슬러 올라갔을 때 어떤 혹이 있는지 대답해야 한다. 그 지점이 두 혹의 경계라면 위쪽 혹의 번호를 답한다. 이때의 답이 지금부터의 "마지막 정답"이 된다. (0≤x<M0 \le x < M, 1≤L≤10181 \le L \le 10^{18})
  • "ad-hoc kk LL": x=(k+x = (k + "마지막 정답")mod  M) \mod M 을 계산한 후, 길이가 LL인 MM번 혹을 새로 만들어 MM번 혹의 윗부분이 xx번 혹의 아래에 닿도록 붙인다. MM번 혹을 붙일 때에는 xx번 혹 이외의 다른 혹에는 닿지 않게 한다. 아직 한 번도 query가 주어지지 않았다면 "마지막 정답"은 00으로 간주한다. 도깨비가 하는 모든 ad-hoc에서 주어지는 모든 LL의 합은 101810^{18} 이하이다. (0≤k<M0 \le k < M)

항상 하나 이상의 query가 주어진다.

출력

모든 query의 답을 순서대로 한 줄에 하나씩 출력한다.

예제1

  1. 예제 1

    입력
    6
    ad-hoc 0 5
    query 1 3
    ad-hoc 0 3
    query 2 2
    ad-hoc 1 2
    query 3 2
    
    예상 출력
    1
    2
    0