#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#define maxn 505
#define ll long long
#define mo 998244353
using namespace std;

int n,m,i,j,k,a[maxn][maxn],c[3];

int main(){
	scanf("%d%d",&n,&m);
	for(i=1;i<=n;i++){
		char ch=getchar();
		while (ch!='R'&&ch!='B'&&ch!='.') ch=getchar();
		for(j=1;j<=m;j++) a[i][j]=(ch=='.')?0:((ch=='R')?1:2),ch=getchar();
	}
	ll ans=1;
	for(i=2;i<=n+m;i++){
		c[0]=c[1]=c[2]=0;
		for(j=1;j<i;j++) if (j>=1&&j<=n&&i-j>=1&&i-j<=m)
			c[a[j][i-j]]++;
		if (c[1]&&c[2]) printf("0\n"),exit(0);
		if (!c[1]&&!c[2]) ans=ans*2%mo;
	}
	printf("%lld\n",ans);
}
//デバッグ用オプション：-fsanitize=undefined,address

//コンパイラ最適化
#pragma GCC optimize("Ofast")

//インクルードなど
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

//マクロ
//forループ
//引数は、(ループ内変数,動く範囲)か(ループ内変数,始めの数,終わりの数)、のどちらか
//Dがついてないものはループ変数は1ずつインクリメントされ、Dがついてるものはループ変数は1ずつデクリメントされる
//FORAは範囲for文(使いにくかったら消す)
#define REP(i,n) for(ll i=0;i<ll(n);i++)
#define REPD(i,n) for(ll i=n-1;i>=0;i--)
#define FOR(i,a,b) for(ll i=a;i<=ll(b);i++)
#define FORD(i,a,b) for(ll i=a;i>=ll(b);i--)
#define FORA(i,I) for(const auto& i:I)
//xにはvectorなどのコンテナ
#define ALL(x) x.begin(),x.end() 
#define SIZE(x) ll(x.size()) 
//定数
#define INF 1000000000000 //10^12:∞
#define MOD 1000000007 //10^9+7:合同式の法
#define MAXR 100000 //10^5:配列の最大のrange
//略記
#define PB push_back //挿入
#define MP make_pair //pairのコンストラクタ
#define F first //pairの一つ目の要素
#define S second //pairの二つ目の要素

int gcd(int x, int y) {
    int m = min(x, y);
    for(int d=m; d>0; d--) {
        if(x % d == 0 && y % d == 0) {
            return d;
        }
    }
}

signed main(){
    //小数の桁数の出力指定
    //cout<<fixed<<setprecision(10);
    //入力の高速化用のコード
    //ios::sync_with_stdio(false);
    //cin.tie(nullptr);
    int  n,max,maxnum;
    std::vector<int> a(100),b(1000,0);
    cin >> n;
    REP(i,n){
        cin >> a[i]; 
    }
    max = 0;
    maxnum = 2;
    FOR(i,2,1000){
        REP(j,n){
            if(a[j]>=i){
                if(a[j]%i==0){
                    b[i]++;
                } 
            }
        }
        if(max<b[i]){
            max = b[i];
            maxnum = i;
        }
    }
    cout << maxnum << endl;
    return 0;
}