Submission

Status:

PPPPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: asamarum70

Problemset: ทางเชื่อม

Language: cpp

Time: 0.345 second

Submitted On: 2026-03-04 16:19:56

#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define fr(i,a,b,c) for(int i = a;i<b;i+=c)
#define fre(i,a,b,c) for(int i = a;i>=b;i-=c)
#define fs first
#define sc second
#define all(a) a.begin(),a.end()
#define IINF 2000000005
#define LINF 1000000000000000005
#define str string
#define endl '\n'
using pii = pair<int,int>;
using pll = pair<ll,ll>;
using tiii = tuple<int,int,int>;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
int uid(int a, int b) { return uniform_int_distribution<int>(a,b)(rng); }
ll uld(ll a, ll b) { return uniform_int_distribution<ll>(a,b)(rng); }

constexpr int MOD = 1000000007; //998244353; 

char a[5005][2];
ll dp[5005][2];

int main(){
    ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
    int tc;cin >> tc;
    while(tc--){
        int n;cin >> n;
        fr(j,0,2,1){
            fr(i,1,n+1,1)cin >> a[i][j];
        }
        dp[0][0] = 1;
        dp[0][1] = 1;
        fr(i,1,n+1,1){
            dp[i][0] = 0;
            dp[i][1] = 0;
            if(a[i][0] == '#' && a[i][1] == '#')continue;
            if(a[i][0] == '#') dp[i][1] = dp[i - 1][1];
            else if(a[i][1] == '#') dp[i][0] = dp[i - 1][0];
            else{
                dp[i][0] = (dp[i - 1][0] + dp[i - 1][1]) % MOD;
                dp[i][1] = (dp[i - 1][0] + dp[i - 1][1]) % MOD;
            }
        }
        cout << (dp[n][0] + dp[n][1]) % MOD << endl;

    }
}