Submission #35750498 
				
			
			Source Code  Expand 
			#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define per(i,a,b) for(int i=(a);i>=(b);i--)
#define op(x) ((x&1)?x+1:x-1)
#define odd(x) (x&1)
#define even(x) (!odd(x))
#define lc(x) (x<<1)
#define rc(x) (lc(x)|1)
#define lowbit(x) (x&-x)
#define mp(x,y) make_pair(x,y)
typedef long long ll;
typedef unsigned long long ull;
typedef double db;
using namespace std;
const int MAXN=1e4+10,LIM=1e4,mod=998244353;
int mypow(int a,int n){
    if(!n)return 1;
    int tmp=mypow(a,n/2);tmp=1ll*tmp*tmp%mod;
    if(n&1)tmp=1ll*tmp*a%mod;return tmp;
}
int myinv(int a){return mypow(a,mod-2);}
int fact[MAXN],factinv[MAXN];
int C(int n,int m){
    if(n<m || m<0)return 0;
    return 1ll*fact[n]*factinv[m]%mod*factinv[n-m]%mod;
}
void add(int& x,int y){x=(x+y)%mod;}
void sub(int& x,int y){x=(x-y+mod)%mod;}
int P(int x){return (odd(x))?(mod-1):(1);}
//
int n,r1,r2,c1,c2,ans;
int pw[MAXN],piv[MAXN];
struct Poly{
    vector<ll>a;
    int n;
    Poly(int N=0){a.resize(N+1,0);n=N;}
    void split(int N,int mode=0){if(mode || (n>N) ){a.resize(N+1,0);n=N;}}
    void output(){rep(i,0,n)cout<<a[i]<<" ";cout<<"\n";}
};
namespace NTT{
    const int MAXN=1e5;
    ll f[MAXN],g[MAXN],h[MAXN],rev[MAXN],N;
    void change(ll* f,int N){rep(i,0,N-1)if(i<rev[i])swap(f[i],f[rev[i]]);}
    void DFT(ll* f,int N,ll rev){
        change(f,N);
        for(int len=2;len<=N;len<<=1){
            ll step=mypow(rev,(mod-1)/len);
            for(int i=0;i<N;i+=len){
                ll w=1;
                rep(j,0,len/2-1){
                    ll x=f[i+j],y=f[i+j+len/2];
                    f[i+j]=(x+w*y)%mod;
                    f[i+j+len/2]=(x-w*y%mod+mod)%mod;
                    w=1ll*w*step%mod;
                }
            }
        }
    }
    Poly ntt(Poly F,Poly G){
        int n=F.n,m=G.n;N=1;
        while(N<=(n+m))N<<=1;
        rep(i,0,N-1)f[i]=g[i]=h[i]=0;
        rep(i,0,N-1){
            rev[i]=rev[i>>1]>>1;
            if(i&1)rev[i]|=(N>>1);
        }
        rep(i,0,n)f[i]=F.a[i];
        rep(i,0,m)g[i]=G.a[i];
        DFT(f,N,3);DFT(g,N,3);
        rep(i,0,N-1)h[i]=1ll*f[i]*g[i]%mod;
        DFT(h,N,myinv(3));
        ll inv=myinv(N);
        rep(i,0,N-1)h[i]=1ll*h[i]*inv%mod;
        Poly ret(n+m);
        rep(i,0,n+m)ret.a[i]=h[i];
        return ret;
    }
};
Poly operator*(Poly p1,Poly p2){return NTT::ntt(p1,p2);}
//
int main(){
    fact[0]=1;rep(i,1,LIM)fact[i]=1ll*fact[i-1]*i%mod;
    factinv[LIM]=myinv(fact[LIM]);per(i,LIM-1,0)factinv[i]=1ll*factinv[i+1]*(i+1)%mod;
    
    pw[0]=1;rep(i,1,LIM)pw[i]=pw[i-1]*2%mod;
    piv[LIM]=myinv(pw[LIM]);per(i,LIM-1,0)piv[i]=piv[i+1]*2%mod;
    //
    cin>>n;
    rep(i,1,n){
        int r;cin>>r;
        if(r==1)r1++;else if(r==2)r2++;
    }
    rep(i,1,n){
        int c;cin>>c;
        if(c==1)c1++;else if(c==2)c2++;
    }
    if(r1+2*r2 != c1+2*c2){cout<<"0";return 0;}
    Poly F(n),G(n),H(n);
    int m=min(r2,c2);
    rep(i,0,m)F.a[i]=1ll*C(r2,i)*C(c2,i)%mod*fact[i]%mod*fact[r2-i]%mod*fact[c2-i]%mod*piv[r2+c2-2*i]%mod;
    rep(i,0,m)G.a[i]=1ll*P(i)*pw[i]%mod*factinv[i]%mod;
    rep(i,0,m)H.a[i]=1ll*fact[c1+2*(c2-i)]*factinv[r2-i]%mod*factinv[c2-i]%mod;
    F=F*G;
    rep(i,0,m)F.a[i]=1ll*F.a[i]*H.a[i]%mod,add(ans,F.a[i]);
    
    cout<<ans;
    return 0;
} 
			
				Submission Info
				
			 
			
			
				
					Submission Time 
					2022-10-17 18:44:05+0900  
				
					Task 
					G - Row Column Sums 2  
				
					User 
					Crying   
				
					Language 
					C++ (GCC 9.2.1) 
				 
				
					Score 
					600 
				 
				
					Code Size 
					3366 Byte 
				 
				
					Status 
					AC  
				
					
						Exec Time 
						13 ms 
					 
					
						Memory 
						4440 KiB 
					 
				
			
Compile Error 
				./Main.cpp: In function ‘int mypow(int, int)’:
./Main.cpp:19:5: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation]
   19 |     if(n&1)tmp=1ll*tmp*a%mod;return tmp;
      |     ^~
./Main.cpp:19:30: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘if’
   19 |     if(n&1)tmp=1ll*tmp*a%mod;return tmp;
      |                              ^~~~~~
 
			
			
				Judge Result 
				
					
							
								Set Name 
								
									Sample 
								
									All 
								
							 
							
								Score / Max Score 
								
									0 / 0 
								
									600 / 600 
								
							 
							
								Status 
								
									
										
											
											
										
									 
								
									
										
											
											
										
									 
								
							 
						
 
				
					
						
						
							Set Name 
							Test Cases 
						 
						 
						
						
							
								Sample 
								example0.txt, example1.txt, example2.txt 
							 
						
							
								All 
								000.txt, 001.txt, 002.txt, 003.txt, 004.txt, 005.txt, 006.txt, 007.txt, 008.txt, 009.txt, 010.txt, 011.txt, 012.txt, 013.txt, 014.txt, 015.txt, 016.txt, 017.txt, 018.txt, 019.txt, 020.txt, 021.txt, 022.txt, 023.txt, 024.txt, 025.txt, 026.txt, 027.txt, 028.txt, 029.txt, 030.txt, 031.txt, 032.txt, 033.txt, example0.txt, example1.txt, example2.txt 
							 
						
						 
					
							
							
								Case Name 
								Status 
								Exec Time 
								Memory 
							 
							 
							
							
							
								000.txt 
								
									AC 8 ms 
									3768 KiB 
								
							 
							
							
								001.txt 
								
									AC 3 ms 
									3800 KiB 
								
							 
							
							
								002.txt 
								
									AC 2 ms 
									3580 KiB 
								
							 
							
							
								003.txt 
								
									AC 2 ms 
									3784 KiB 
								
							 
							
							
								004.txt 
								
									AC 2 ms 
									3756 KiB 
								
							 
							
							
								005.txt 
								
									AC 8 ms 
									4368 KiB 
								
							 
							
							
								006.txt 
								
									AC 13 ms 
									4244 KiB 
								
							 
							
							
								007.txt 
								
									AC 10 ms 
									4412 KiB 
								
							 
							
							
								008.txt 
								
									AC 5 ms 
									3572 KiB 
								
							 
							
							
								009.txt 
								
									AC 5 ms 
									3672 KiB 
								
							 
							
							
								010.txt 
								
									AC 3 ms 
									3704 KiB 
								
							 
							
							
								011.txt 
								
									AC 5 ms 
									3680 KiB 
								
							 
							
							
								012.txt 
								
									AC 5 ms 
									3652 KiB 
								
							 
							
							
								013.txt 
								
									AC 5 ms 
									3752 KiB 
								
							 
							
							
								014.txt 
								
									AC 9 ms 
									4404 KiB 
								
							 
							
							
								015.txt 
								
									AC 11 ms 
									4416 KiB 
								
							 
							
							
								016.txt 
								
									AC 11 ms 
									4240 KiB 
								
							 
							
							
								017.txt 
								
									AC 10 ms 
									4440 KiB 
								
							 
							
							
								018.txt 
								
									AC 11 ms 
									4440 KiB 
								
							 
							
							
								019.txt 
								
									AC 8 ms 
									4332 KiB 
								
							 
							
							
								020.txt 
								
									AC 8 ms 
									4404 KiB 
								
							 
							
							
								021.txt 
								
									AC 8 ms 
									4408 KiB 
								
							 
							
							
								022.txt 
								
									AC 9 ms 
									4408 KiB 
								
							 
							
							
								023.txt 
								
									AC 9 ms 
									4304 KiB 
								
							 
							
							
								024.txt 
								
									AC 11 ms 
									4408 KiB 
								
							 
							
							
								025.txt 
								
									AC 9 ms 
									4368 KiB 
								
							 
							
							
								026.txt 
								
									AC 11 ms 
									4412 KiB 
								
							 
							
							
								027.txt 
								
									AC 11 ms 
									4284 KiB 
								
							 
							
							
								028.txt 
								
									AC 11 ms 
									4296 KiB 
								
							 
							
							
								029.txt 
								
									AC 10 ms 
									4296 KiB 
								
							 
							
							
								030.txt 
								
									AC 8 ms 
									4296 KiB 
								
							 
							
							
								031.txt 
								
									AC 12 ms 
									4244 KiB 
								
							 
							
							
								032.txt 
								
									AC 8 ms 
									4404 KiB 
								
							 
							
							
								033.txt 
								
									AC 8 ms 
									4240 KiB 
								
							 
							
							
								example0.txt 
								
									AC 2 ms 
									3592 KiB 
								
							 
							
							
								example1.txt 
								
									AC 2 ms 
									3756 KiB 
								
							 
							
							
								example2.txt 
								
									AC 2 ms 
									3768 KiB