https://www.nowcoder.com/acm/contest/148/A
对于一个数, ()x+lowbit)/2+(x-lowbit)/2=x
#include<bits/stdc++.h>
#define mod 998244353
using namespace std;
long long qpow(long long x,long long cs)
{
long long ans=1;
while(cs)
{
if(cs&1)
ans=ans*x%mod;
x=x*x%mod;
cs>>=1;
}
return ans;
}
int main() {
long long a[111111];
long long qz[111111];
int t;
cin>>t;
while(t--)
{
long long n,m;
cin>>n>>m;
long long er=qpow(2,n*m)%mod;
for(int i=1;i<=n;i++)
{
scanf("%lld",&a[i]);
a[i]%=mod;
}
qz[1]=a[1];
for(int i=2;i<=n;i++)
{
qz[i]=qz[i-1]+a[i];
qz[i]%=mod;
}
int op,l,r;
while(m--)
{
scanf("%d %d %d",&op,&l,&r);
if(op==2)
{
long long ans=(qz[r]-qz[l]+a[l]+mod)%mod;
ans=ans*er%mod;
printf("%lld\n",ans);
}
}
}
return 0;
}