만드는 중입니다

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

줌

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

요약
배열에 구간 덧셈, 두 칸씩 묶은 블록 복사, 지금까지의 연산 전체 재실행을 적용하고 구간 합을 998244353으로 나눈 나머지로 출력합니다.
난이도

어려움10점 중 8점

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

문제

길이가 짝수인 수열 AA가 주어진다. 처음에 AA의 모든 원소는 00이다. 다음 쿼리를 처리하라.

  • 1 l r b: Al,Al+1,⋯ ,ArA_l, A_{l+1}, \cdots, A_r에 각각 bb를 더한다.
  • 2 l: 11 이상 NN 이하의 모든 정수 ii에 대해 AiA_i를 Al+⌊i−12⌋A_{l+\lfloor \frac{i-1}{2} \rfloor}로 바꾼다. 모든 ii에 대한 교체는 동시에 이루어진다.
  • 3: 지금까지 실행한 모든 1번, 2번 쿼리를 같은 순서로 다시 실행한다. 3번 쿼리가 실행한 1번, 2번 쿼리도 포함한다.
  • 4 l r: ∑i=lrAi\sum_{i=l}^r A_i를 998 244 353998\,244\,353으로 나눈 나머지를 출력한다.

입력

첫 번째 줄에 수열의 길이 NN과 쿼리의 수 QQ가 공백으로 구분되어 주어진다.

두 번째 줄부터 QQ개의 줄에 쿼리가 한 줄에 하나씩 주어진다.

출력

4번 쿼리마다 그 답을 한 줄에 하나씩 출력한다.

제한

  • 2≤N≤100 0002 \leq N \leq 100\,000, NN은 짝수이다.
  • 1≤Q≤100 0001 \leq Q \leq 100\,000
  • 모든 1번 쿼리에 대해 1≤l≤r≤N1 \leq l \leq r \leq N, 1≤b≤998 244 3521 \leq b \leq 998\,244\,352이다.
  • 모든 2번 쿼리에 대해 1≤l≤N2+11 \leq l \leq \frac{N}{2}+1이다.
  • 모든 4번 쿼리에 대해 1≤l≤r≤N1 \leq l \leq r \leq N이다.
  • 입력에는 4번 쿼리가 적어도 하나 있다.
  • 주어지는 모든 수는 정수이다.

예제3

  1. 예제 1

    입력
    6 9
    1 1 5 2
    1 5 6 3
    2 4
    4 1 1
    4 2 2
    4 3 3
    4 4 4
    4 5 5
    4 6 6
    
    예상 출력
    2
    2
    5
    5
    3
    3
    
  2. 예제 2

    입력
    6 11
    1 1 5 2
    1 5 6 3
    3
    3
    3
    4 1 1
    4 2 2
    4 3 3
    4 4 4
    4 5 5
    4 6 6
    
    예상 출력
    16
    16
    16
    16
    40
    24
    
  3. 예제 3

    입력
    8 8
    1 2 5 1
    2 3
    3
    4 1 8
    1 2 5 2
    2 4
    3
    4 1 8
    
    예상 출력
    14
    42