#include<bits/stdc++.h>
using namespace std;
#define LL long long
#define ULL unsigned long long
#define mp make_pair
#define pb push_back
#define pii pair<int,int>
#define pll pair<LL,LL>
#define x first
#define y second
#define pi acos(-1)
#define sqr(x) ((x)*(x))
#define pdd pair<double,double>
#define MEMS(x) memset(x,-1,sizeof(x))
#define MEM(x) memset(x,0,sizeof(x))
#define less Less
#define EPS 1e-4
#define arg ARG
#define pdd pair<double,double>
#define cpdd const pdd
int main(){
    int mod=998244353;
    int n;
    scanf("%d",&n);
    LL fra[300005];
    fra[0]=1;
    for(int i = 1;i<=n;i++){
        fra[i]=fra[i-1]*i%mod;
    }
    char c[300005];
    int num[300005];
    scanf("%s",c);
    int r=0,g=0,b=0;
    LL ans=1;
    for(int i = 0;c[i]!=0;i++){
        if(c[i]=='R')
        {   
            if(r>=g&&r>=b){
                num[i]=0;
            }
            else if(r<g&&r<b){
                num[i]=2;
            }
            else{
                num[i]=1;
            }
            r++;
        }
        if(c[i]=='G'){
            
            if(g>=r&&g>=b){
                num[i]=0;
            }
            else if(g<r&&g<b){
                num[i]=2;
            }
            else{
                num[i]=1;
            }
            g++;
        }
        if(c[i]=='B'){
            if(b>=r&&b>=g){
                num[i]=0;
            }
            else if(b<r&&b<g){
                num[i]=2;
            }
            else{
                num[i]=1;
            }
            b++;
            
        }
    //    printf("%d ",num[i]);
    }
   // printf("\n");
    int rr[3]={0,0,0},gg[3]={0,0,0},bb[3]={0,0,0};
    for(int i = 0;i<3*n;i++){
        if(c[i]=='R'){
            if(num[i]==0)rr[0]++;
            else if(num[i]==1){
                if(gg[0]){
                    ans*=gg[0];
                    gg[0]--;
                    bb[2]++;
                }
                else if(bb[0]){
                    ans*=bb[0];
                    bb[0]--;
                    gg[2]++;
                }
            } 
            else{
                ans*=rr[2];
                rr[2]--;
            }
        }
        else if(c[i]=='G'){
            if(num[i]==0)gg[0]++;
            else if(num[i]==1){
                if(rr[0]){
                    ans*=rr[0];
                    rr[0]--;
                    bb[2]++;
                }
                else if(bb[0]){
                    ans*=bb[0];
                    bb[0]--;
                    rr[2]++;
                }
            }
            else{
                ans*=gg[2];
                gg[2]--;
            }
        }
        else{
            if(num[i]==0)bb[0]++;
            else if(num[i]==1){
                if(rr[0]){
                    ans*=rr[0];
                    rr[0]--;
                    gg[2]++;
                }
                else if(gg[0]){
                    ans*=gg[0];
                    gg[0]--;
                    rr[2]++;
                }
            }
            else{
                ans*=bb[2];
              //  printf("%d \n",bb[2]);
                bb[2]--;
            }
        }
       // printf("%lld ",ans);
        ans%=mod;
    }
    printf("%lld\n",ans*fra[n]%mod);
}
/*
100
2 3
0 500000000 1000000000
1000000000 1000000000 1000000000
 */

Measured memory_bytes: 3968