M=998244353 B=448 class LST: def __init__(self): self.st1=[0]*B*B self.st2=[0]*B self.lt=[-1]*B return def apl(self,l,r,x): yl=l//B yr=r//B if self.lt[yl]!=-1: for i in range(B): self.st1[yl*B+i]=self.lt[yl] self.lt[yl]=-1 if self.lt[yr]!=-1: for i in range(B): self.st1[yr*B+i]=self.lt[yr] self.lt[yr]=-1 if yl==yr: for i in range(l,r+1): self.st1[i]=x self.st2[yl]=sum(self.st1[yl*B:yl*B+B])%M else: for i in range(l,yl*B+B): self.st1[i]=x self.st2[yl]=sum(self.st1[yl*B:yl*B+B])%M for i in range(yl+1,yr): self.st2[i]=x*B%M self.lt[i]=x for i in range(yr*B,r+1): self.st1[i]=x self.st2[yr]=sum(self.st1[yr*B:yr*B+B])%M return def prd(self,l,r): yl=l//B yr=r//B if self.lt[yl]!=-1: for i in range(B): self.st1[yl*B+i]=self.lt[yl] self.lt[yl]=-1 if self.lt[yr]!=-1: for i in range(B): self.st1[yr*B+i]=self.lt[yr] self.lt[yr]=-1 a=0 if yl==yr: a+=sum(self.st1[l:r+1])%M else: a+=sum(self.st1[l:yl*B+B])%M a+=sum(self.st2[yl+1,yr])%M a+=sum(self.st1[yr*B:r+1])%M return a%M q1=LST() q2=LST() q3=LST() q4=LST() n=int(input()) a=list(map(int,input().split())) for i in range(n): v=a[i] q1.apl(i,i,v**1%M) q2.apl(i,i,v**2%M) q3.apl(i,i,v**3%M) q4.apl(i,i,v**4%M) Q=int(input()) for _ in range(Q): que=list(map(int,input().split())) t=que[0] if t==0: _,l,r,m,v=que if l>r: l,r=r,l l-=1 r-=1 m-=1 if lr: l,r=r,l l-=1 r-=1 m-=1 s1=(q1.prd(l,r) if lr: l,r=r,l l-=1 r-=1 m-=1 s1=(q1.prd(l,r) if lr: l,r=r,l l-=1 r-=1 m-=1 s1=(q1.prd(l,r) if lr: l,r=r,l l-=1 r-=1 m-=1 s1=(q1.prd(l,r) if l