#include<iostream> #include<cassert> #include<atcoder/modint> using namespace std; using mint=atcoder::modint998244353; int N,P,Q; int to[2<<17]; bool vis[2<<17]; int isp[2<<17]; int mx[2<<17]; int main() { cin>>N>>P>>Q; if(P==1&&Q==1) { cout<<1<<endl; return 0; } if(P==1||Q==1) { cout<<2<<endl; return 0; } if(P+Q<=N) { cout<<4<<endl; return 0; } for(int i=0;i<N;i++) { {//P if(i<P)to[i]=N+(P-i-1); else to[i]=N+i; } {//Q if(N-Q<=i)to[N+i]=N-1-(i-(N-Q)); else to[N+i]=i; } } for(int p=2;p<=2*N;p++)if(isp[p]==0) { mx[p]=1; for(int i=p;i<=2*N;i+=p)isp[i]=p; } for(int i=0;i<N;i++)if(!vis[i]) { int u=i; int c=0; while(!vis[u]) { c++; vis[u]=true; u=to[u]; } assert(u<N); while(c>1) { int p=isp[c]; int q=1; while(c%p==0)c/=p,q*=p; mx[p]=max(mx[p],q); } } mint ans=1; for(int p=2;p<=2*N;p++)if(isp[p]==p)ans*=mx[p]; cout<<ans.val()<<endl; }