版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37360631/article/details/81873649
#include<bits/stdc++.h>
#define Mod 998244353
typedef long long ll;
using namespace std;
int T,a,b,c,d,ans;
ll Pow(ll x,ll n)
{
ll res=1;
while(n>0)
{
if(n%2==1)
{
res=res*x%Mod;
}
x=x*x%Mod;
n>>=1;
}
return res;
}
int main(){
cin>>T;
while(T--){
cin>>a>>b>>c>>d;
ll x=(b+d+1)*Pow(2,a+c);
ll y=Pow(2,a+b);
ll z=(b+1)*Pow(2,a);
ll ans=(x%Mod+y%Mod-z%Mod)%Mod;
// ll x=(Pow(2,b)-b-1)*(Pow(2,c)-1)*Pow(2,a);
// ll y=d*(Pow(2,b)-1)*Pow(2,a+c);
// ll z=(Pow(2,d)-1-d)*(Pow(2,a+b+c));
// ll q=Pow(2,a+b+c+d);
//
// ans=q-x-y-z;
// if(d>=2&&b>=2){
// ll tmp=x+y+z;
// ans=q-tmp;
// }
// else if(d>=2 &&b==1){
// ll tmp=y+z;
// ans=q-tmp;
// }
//
// else if(d>=2 &&b==0){
// ans=q-z;
// }
//
// else if(d==1 &&b>=2){
// ans=q-x-y;
// }
// else if(d==0 &&b>=2){
// ans=q-x;
// }
// else if(d=1&&b==1){
// ans=q-pow(2,a+c);
// }
// else{
// ans=q;
// }
if(ans<0) ans+=Mod;
cout<<ans<<endl;
}
return 0;
}