import sys input = sys.stdin.readline N,Q=map(int,input().split()) A=sorted(map(int,input().split()),reverse=True) B=[list(map(int,input().split())) for i in range(Q)] mod=998244353 DP=[[0]*(N+3) for i in range(N+1)] DP[0][0]=1 for i in range(N): a=A[i] for j in range(N,-1,-1): DP[i+1][j]=(DP[i][j]*(a-1)+DP[i][j-1])%mod #print(DP) import bisect AX=list(reversed(A)) KR=[1] for a in AX: KR.append(KR[-1]*a%mod) KR.reverse() for l,r,x in B: ANS=0 for k in range(l,r+1): t=bisect.bisect_left(AX,k) ANS^=DP[N-t][x]*KR[N-t]%mod print(ANS)