만드는 중입니다

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

행복도

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

요약
턴테이블을 돌리거나 찻잔 하나를 회전시키는 이벤트마다, 두 찻잔 중심을 잇는 직선 위에 놓인 사람들의 행복도 합을 998244353으로 나눈 나머지로 구합니다.
난이도

어려움10점 중 8점

유형
수학, 정수론, 구현
정답자
아직 제출이 없습니다

문제

당신은 동네 놀이공원에서 회전하는 찻잔 놀이기구를 보고 있습니다. 잠시 관찰하면 이 놀이기구에 대해 몇 가지 흥미로운 점이 보입니다.

이 놀이기구는 회전판 둘레에 같은 간격으로 놓인 NN개의 원형 찻잔으로 이루어집니다. i=0,1,…,N−1i = 0, 1, \ldots, N - 1에 대해 ii번째 찻잔의 중심은 처음에 북쪽에서 시계 방향으로 i⋅360Ni \cdot \frac{360}{N}도 떨어진 점에 있습니다. 회전판은 찻잔들이 서로 부딪히지 않을 만큼 충분히 큽니다. 각 찻잔에는 NN명의 사람이 찻잔 둘레에 같은 간격으로 앉아 있습니다. i=0,1,…,N−1i = 0, 1, \ldots, N - 1에 대해 ii번째 사람은 처음에 북쪽에서 시계 방향으로 i⋅360Ni \cdot \frac{360}{N}도 떨어진 점에 있습니다. 찻잔이 충분히 크므로 사람은 점으로 봅니다. 각 찻잔에서 ii번째 사람의 행복 값은 viv_i입니다. 서로 다른 찻잔에서 처음 같은 위치에 있는 사람들은 같은 행복 값을 갖습니다.

QQ밀리초 동안 매 밀리초마다 다음 두 사건 중 하나가 일어납니다.

  • 회전판이 시계 방향으로 ki⋅360Nk_i \cdot \frac{360}{N}도 회전합니다. 찻잔들은 이를 보상하므로, 회전판 바깥을 기준으로 한 찻잔의 방향은 바뀌지 않습니다.
  • 북쪽에서 시계 방향으로 qi⋅360Nq_i \cdot \frac{360}{N}도 떨어진 위치에 있는 찻잔이 자신의 중심을 기준으로 시계 방향으로 ki⋅360Nk_i \cdot \frac{360}{N}도 회전합니다. 다른 찻잔은 영향을 받지 않습니다.

처음과 매 사건 뒤의 모든 사람의 행복도 합을 구하세요. 총 행복도는 개인 행복 값의 합입니다. 행복 값이 ww인 사람이 두 찻잔의 중심을 잇는 직선 위에 있으면 그 사람의 행복도는 ww입니다. 그렇지 않으면 0입니다. 총 행복도는 클 수 있으므로 998244353으로 나눈 나머지를 출력하세요.

입력

첫 줄에 두 정수 NN, QQ (2≤N≤2000002 \le N \le 200000, 1≤Q≤2000001 \le Q \le 200000)가 주어집니다.

다음 줄에는 NN개의 정수 v0,v1,…,vN−1v_0, v_1, \ldots, v_{N-1} (1≤vi≤10000001 \le v_i \le 1000000)이 주어집니다.

다음 QQ개의 줄은 사건을 나타냅니다. 각 줄은 "1 kik_i" (1≤ki≤N1 \le k_i \le N) 형식이거나 "2 qiq_i kik_i" (0≤qi<N0 \le q_i < N, 1≤ki≤N1 \le k_i \le N) 형식입니다. 첫 번째 형식은 회전판이 시계 방향으로 ki⋅360Nk_i \cdot \frac{360}{N}도 회전한다는 뜻입니다. 두 번째 형식은 위쪽(북쪽)에서 시계 방향으로 qi⋅360Nq_i \cdot \frac{360}{N}도 떨어진 찻잔이 자신의 중심을 기준으로 시계 방향으로 ki⋅360Nk_i \cdot \frac{360}{N}도 회전한다는 뜻입니다.

출력

Q+1Q+1개의 줄을 출력합니다. jj번째 줄 (j=0,1,…,Qj = 0, 1, \ldots, Q)에는 jj개의 사건을 처리한 뒤의 총 행복도를 998244353으로 나눈 나머지로 씁니다.

예제1

  1. 예제 1

    입력
    6 3
    1 2 4 8 16 32
    2 1 4
    1 5
    2 4 2
    
    예상 출력
    189
    168
    210
    252