#include<bits/stdc++.h>
using namespace std;
const int N=1e6+4;
typedef long long ll;
ll mod=998244353;
ll ksm(ll x,ll pow){
ll ans=1,res=x;
while(pow){
if(pow&1) ans=1ull*ans*res%mod;
res=1ull*res*res%mod;
pow>>=1;
}
return ans;
}
int nn[N],aa[N],bb[N];
ll ans4[N];
int main(){
int T;int mx=0;
scanf("%d",&T);
for(int i=1;i<=T;i++){
scanf("%d%d%d",&nn[i],&aa[i],&bb[i]);
mx=max(mx,nn[i]);
}
ans4[1]=1,ans4[2]=1;
ans4[3]=1,ans4[4]=2;
for(int i=5;i<=mx;i+=2){
ans4[i]=(ans4[i-1]+ans4[i-3])%mod;
ans4[i+1]=(ans4[i]+ans4[i-2])%mod;
}
for(int i=1;i<=T;i++){
int n=nn[i],a=aa[i],b=bb[i];
if(a==n-1&&b==n){
puts("1");
continue;
}
if(a==n&&b==n-1){
puts("1");
continue;
}
if(a==1&&b==2){
puts("1");
continue;
}
if(a==2&&b==1){
puts("1");
continue;
}
if((a+1)==b||(b+1)==a){
puts("0");
continue;
}
if(n==2){
puts("1");
continue;
}
if(a==1&&b==n){
printf("%lld\n",ans4[n]);
continue;
}
if(a==n&&b==1){
printf("%lld\n",ans4[n]);
continue;
}
if(a==1){
b--;
printf("%lld\n",ans4[b]);
continue;
}
if(b==1){
a--;
printf("%lld\n",ans4[a]);
continue;
}
int mnn=min(a,b),mxx=max(a,b);
if(mxx==n){
if(mnn%2==1&&mxx%2==1){
int tpp=mnn+1;
int tpp2=mxx-tpp+1;
printf("%lld\n",ans4[tpp2]);
continue;
}
if(mnn%2==1&&mxx%2==0){
int tpp=mnn+1;
int tpp2=mxx-tpp+1;
printf("%lld\n",ans4[tpp2]);
continue;
}
int tpp=mnn+1;
int tpp2=mxx-tpp+1;
printf("%lld\n",ans4[tpp2]);
continue;
}
int tp1=mnn+1,tp2=mxx-1;
printf("%lld\n",ans4[tp2-tp1+1]);
continue;
}
}
细节题,这种题一定要多造几组数据判断