#include <bits/stdc++.h>
using namespace std;
#define MOD 1000000007
// Trả về true nếu hai ký tự a và b cùng loại phép (cùng chữ số hoặc cùng '+')
bool check(char a, char b) {
if ((a >= '0' && a <= '9') && (b >= '0' && b <= '9')) return true;
if (a == '+' && b == '+') return true;
return false;
}
void solve() {
int n;
cin >> n;
vector<char> bessie(n+1), elsie(n+1);
for (int i = 1; i <= n; i++) cin >> bessie[i];
for (int i = 1; i <= n; i++) cin >> elsie[i];
// Xác định breakPoint riêng cho từng chuỗi (lần '0' cuối cùng)
int bpB = 0, bpE = 0;
for (int i = n; i >= 1; i--) {
if (bessie[i] == '0' && bpB == 0) bpB = i;
if (elsie[i] == '0' && bpE == 0) bpE = i;
}
if (bpB == 0) bpB = 1;
if (bpE == 0) bpE = 1;
// Tạo các chuỗi đã loại bỏ ×1 và cắt từ breakPoint
string B = "@", E = "@";
for (int i = n; i >= bpB; i--) {
if (bessie[i] != '1') B.push_back(bessie[i]);
}
for (int i = n; i >= bpE; i--) {
if (elsie[i] != '1') E.push_back(elsie[i]);
}
reverse(B.begin() + 1, B.end());
reverse(E.begin() + 1, E.end());
int szB = (int)B.size() - 1;
int szE = (int)E.size() - 1;
// DP[i][j][k]: số cách xen i ký tự B và j ký tự E,
// với k=0 là cuối cùng là B, k=1 là cuối cùng là E, và không vi phạm.
vector<vector<array<int,2>>> dp(szB+1,
vector<array<int,2>>(szE+1, {0,0}));
dp[0][0][0] = dp[0][0][1] = 1;
for (int i = 0; i <= szB; i++) {
for (int j = 0; j <= szE; j++) {
long long curB = dp[i][j][0];
long long curE = dp[i][j][1];
// 1) Thêm một ký tự của Elsie → k = 1
if (j + 1 <= szE) {
// E sau B luôn OK
dp[i][j+1][1] = (dp[i][j+1][1] + curB) % MOD;
// E sau E luôn OK
dp[i][j+1][1] = (dp[i][j+1][1] + curE) % MOD;
}
// 2) Thêm một ký tự của Bessie → k = 0
if (i + 1 <= szB) {
// B sau B luôn OK
dp[i+1][j][0] = (dp[i+1][j][0] + curB) % MOD;
// B sau E: chỉ cấm khi cùng loại và j>0
if (j == 0 || !check(B[i+1], E[j])) {
dp[i+1][j][0] = (dp[i+1][j][0] + curE) % MOD;
}
}
}
}
int ans = (dp[szB][szE][0] + dp[szB][szE][1]) % MOD;
cout << ans << "\n";
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t;
cin >> t;
while (t--) {
solve();
}
return 0;
}