만드는 중입니다

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

카드 셔플

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

요약
N장의 카드를 구간 단위로 맨 위나 맨 아래로 옮기거나 리플 셔플하는 Q개의 질의를 처리한 뒤 최종 순서를 출력하는 문제입니다.
난이도

보통10점 중 6점

유형
트리, 시뮬레이션
정답자
아직 제출이 없습니다

문제

위에서부터 1,2,…,N1, 2, \ldots, N이 적혀 있는 카드 한 벌이 있다. 1≤x≤y≤N1 \le x \le y \le N인 두 정수 xx, yy에 대해 다음 쿼리를 수행한다.

  • 1 x y: 위에서부터 xx번째 카드부터 yy번째 카드까지를 제일 위로 올린다.
  • 2 x y: 위에서부터 xx번째 카드부터 yy번째 카드까지를 제일 아래로 내린다.
  • 3 x y: 위에서부터 xx번째 카드부터 yy번째 카드까지 리플 셔플을 한다. y−x+1y - x + 1은 1,000 이하이다.

리플 셔플은 NN장의 카드를 위에서부터 ⌊(N+1)/2⌋\lfloor (N + 1) / 2 \rfloor장짜리 덩어리와 나머지 덩어리로 나눈 뒤, 두 덩어리에서 번갈아 카드를 놓아 섞는 방식이다. 섞기 전에 제일 위에 있던 카드는 섞은 뒤에도 제일 위에 있다.

입력

첫 줄에 카드 수 NN(1≤N≤1061 \le N \le 10^6)과 쿼리의 수 QQ(1≤Q≤2×1051 \le Q \le 2 \times 10^5)가 주어진다. 다음 QQ개의 줄에 쿼리가 주어진다.

출력

모든 쿼리를 처리한 뒤, 카드에 적힌 숫자를 위에서부터 순서대로 출력한다.

힌트

카드가 6장일 때 쿼리 3 1 6을 처리하면

1 2 3 4 5 6 ⇒ 1 4 2 5 3 6

이 되고, 카드가 7장일 때 3 1 7이 입력으로 들어오면

1 2 3 4 5 6 7 ⇒ 1 5 2 6 3 7 4

가 된다.

예제1

  1. 예제 1

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