/* ****GT_18**** */

#include<bits/stdc++.h>
#define ll          long long
#define pb          push_back
#define    endl        '\n'
#define pii         pair<ll int,ll int>
#define vi          vector<ll int>
#define all(a)      (a).begin(),(a).end()
#define F           first
#define S           second
#define sz(x)       (ll int)x.size()
#define hell        998244353
#define rep(i,a,b)    for(ll int i=a;i<b;i++)
#define lbnd        lower_bound
#define ubnd        upper_bound
#define bs          binary_search
#define mp          make_pair
using namespace std;

#define N  100005

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int TESTS=1;
//    cin>>TESTS;
    while(TESTS--)
    {
        ll i,j,k,l,m,n;
        cin>>n;
        string s;
        cin>>s;
        map<string,ll> ma;
        ll ans=1;
        for(i=0;i<3*n;i++)
        {
            if(s[i]=='R')
            {
                if(ma["GB"]!=0)
                {
                    ans=(ans*ma["GB"])%hell;
                    ma["GB"]--;
                }
                else
                {
                    if(ma["G"]+ma["B"]>0)
                    {
                        ans=(ans*(ma["G"]+ma["B"]))%hell;
                        if(ma["G"]>0)
                        {
                            ma["RG"]++;
                            ma["G"]--;
                        }
                        else
                        {
                            ma["RB"]++;
                            ma["B"]--;
                        }
                    }
                    else
                    {
                        ma["R"]++;
                    }
                }
            }
            if(s[i]=='G')
            {
                if(ma["RB"]!=0)
                {
                    ans=(ans*ma["RB"])%hell;
                    ma["RB"]--;
                }
                else
                {
                    if(ma["R"]+ma["B"]>0)
                    {
                        ans=(ans*(ma["R"]+ma["B"]))%hell;
                        if(ma["R"]>0)
                        {
                            ma["RG"]++;
                            ma["R"]--;
                        }
                        else
                        {
                            ma["GB"]++;
                            ma["B"]--;
                        }
                    }
                    else
                    {
                        ma["G"]++;
                    }
                }
            }
            if(s[i]=='B')
            {
                if(ma["RG"]!=0)
                {
                    ans=(ans*ma["RG"])%hell;
                    ma["RG"]--;
                }
                else
                {
                    if(ma["G"]+ma["R"]>0)
                    {
                        ans=(ans*(ma["G"]+ma["R"]))%hell;
                        if(ma["G"]>0)
                        {
                            ma["GB"]++;
                            ma["G"]--;
                        }
                        else
                        {
                            ma["RB"]++;
                            ma["R"]--;
                        }
                    }
                    else
                    {
                        ma["B"]++;
                    }
                }
            }
        }
        for(i=1;i<=n;i++)
            ans=(ans*i)%hell;
        cout<<ans;
    }
    return 0;
}

Measured memory_bytes: 720