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;
}
}