#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=4e5+7;
const int mod =1000000007;
int fact[N];
int binpow(int a,int b,int m) {
a %= m;
int res = 1;
while(b>0) {
if (b&1)
{
res=res*a%m;
}
a=a*a%m;
b>>=1;
}
return res;
}
int ncr(int n,int k)
{
int res=fact[n];
res=(res*1LL*binpow(fact[k],mod-2,mod))%mod;
res=(res*1LL*binpow(fact[n-k],mod-2,mod))%mod;
return res;
}
void solve() {
int n;
cin >> n;
string a, b;
cin >> a >> b;
fact[0]=fact[1]=1;
for (int i = 2; i <= n; ++i) {
fact[i] = (1LL * fact[i - 1] * i) % mod;
}
int ones_a = count(a.begin(), a.end(), '1');
int ones_b = count(b.begin(), b.end(), '1');
int min_ones = abs(ones_a - ones_b);
int max_ones = ones_a + ones_b - 2 * max(0LL, ones_a + ones_b - n);
int ans = 0;
for (int ones = min_ones; ones <= max_ones; ones+=2) {
ans = (ans + ncr(n, ones)) % mod;
}
cout << ans << "\n";
}
signed main () {
int t;
cin >> t;
for (int i = 0; i < t; ++i) {
solve();
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgaW50IGxvbmcgbG9uZwpjb25zdCBpbnQgTj00ZTUrNzsKY29uc3QgaW50IG1vZCA9MTAwMDAwMDAwNzsKaW50IGZhY3RbTl07CgppbnQgYmlucG93KGludCBhLGludCBiLGludCBtKSB7CiAgICBhICU9IG07CiAgICBpbnQgcmVzID0gMTsKICAgIHdoaWxlKGI+MCkgewogICAgICAgIGlmIChiJjEpCiAgICAgICAgewogICAgICAgICAgICByZXM9cmVzKmElbTsKICAgICAgICB9CiAgICAgICAgYT1hKmElbTsKICAgICAgICBiPj49MTsKICAgIH0KICAgIHJldHVybiByZXM7Cn0KaW50IG5jcihpbnQgbixpbnQgaykKewogICAgaW50IHJlcz1mYWN0W25dOwogICAgcmVzPShyZXMqMUxMKmJpbnBvdyhmYWN0W2tdLG1vZC0yLG1vZCkpJW1vZDsKICAgIHJlcz0ocmVzKjFMTCpiaW5wb3coZmFjdFtuLWtdLG1vZC0yLG1vZCkpJW1vZDsKICAgIHJldHVybiByZXM7Cn0KCnZvaWQgc29sdmUoKSB7CglpbnQgbjsKCWNpbiA+PiBuOwoKCXN0cmluZyBhLCBiOwoJY2luID4+IGEgPj4gYjsKCQogICAgZmFjdFswXT1mYWN0WzFdPTE7Cglmb3IgKGludCBpID0gMjsgaSA8PSBuOyArK2kpIHsKCQlmYWN0W2ldID0gKDFMTCAqIGZhY3RbaSAtIDFdICogaSkgJSBtb2Q7Cgl9CgoJaW50IG9uZXNfYSA9IGNvdW50KGEuYmVnaW4oKSwgYS5lbmQoKSwgJzEnKTsKCWludCBvbmVzX2IgPSBjb3VudChiLmJlZ2luKCksIGIuZW5kKCksICcxJyk7CgoJaW50IG1pbl9vbmVzID0gYWJzKG9uZXNfYSAtIG9uZXNfYik7CglpbnQgbWF4X29uZXMgPSBvbmVzX2EgKyBvbmVzX2IgLSAyICogbWF4KDBMTCwgb25lc19hICsgb25lc19iIC0gbik7CgoJaW50IGFucyA9IDA7Cglmb3IgKGludCBvbmVzID0gbWluX29uZXM7IG9uZXMgPD0gbWF4X29uZXM7IG9uZXMrPTIpIHsKCQlhbnMgPSAoYW5zICsgbmNyKG4sIG9uZXMpKSAlIG1vZDsKCX0KCgljb3V0IDw8IGFucyA8PCAiXG4iOwp9CgpzaWduZWQgbWFpbiAoKSB7CglpbnQgdDsKCWNpbiA+PiB0OwoJZm9yIChpbnQgaSA9IDA7IGkgPCB0OyArK2kpIHsKCQlzb2x2ZSgpOwoJfQoKCXJldHVybiAwOwp9Cg==