rt
只AC了样例+四个点
//F
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
const int N = 2e5 + 10;
const ll P = 998244353;
int n, q;
struct BIT{
#define lb(x) ((x)&-(x))
ll bit[N];
void add(int x, ll v){ while(x <= n) bit[x] = (bit[x]+v)%P, x += lb(x); }
void mod(int x, ll v){ add(x, v - (ask(x) - ask(x-1))); }
ll ask(int x){ ll r=0; while(x) r = (r+bit[x])%P, x -= lb(x); return r; }
} p0, p1, p2;
int main(){
scanf("%d%d", &n, &q);
for(int i = 1; i <= n; ++ i){
ll a; scanf("%lld", &a);
p0.add(i, a);
p1.add(i, a*i);
p2.add(i, a*i*i);
}
for(int i = 1; i <= q; ++ i){
int op, x; scanf("%d%d", &op, &x);
if(op == 1){
ll v; scanf("%lld", &v);
p0.mod(x, v);
p1.mod(x, v*i);
p2.mod(x, v*i*i);
} else {
ll a1 = p2.ask(x);
ll a2 = (x+x+3) * p1.ask(x) % P;
ll a3 = (x+1) * (x+2) % P * p0.ask(x) % P;
printf("%lld\n", (a1-a2+a3+P)%P*499122177%P);
}
}
return 0;
}