#include<bits/stdc++.h>
#define REP(i,n) for (int i = 1; i <= n; i++)
#define mod 1000000007
#define pb push_back
#define ff first
#define ss second
#define ii pair<int,int>
#define vi vector<int>
#define vii vector<ii>
#define lli long long int
#define INF 1000000000
#define endl '\n'
const double PI = 3.141592653589793238460;
typedef std::complex<double> Complex;
typedef std::valarray<Complex> CArray;
using namespace std;
lli fact[100001];
int N = 100000;
void init()
{
fact[0] = 1;
REP(i , N) fact[i] = (fact[i-1] * i) % mod;
}
lli power(lli a , lli n)
{
lli res = 1;
while(n)
{
if(n & 1)
res = (res * a) % mod;
n >>= 1;
a = (a * a) % mod;
}
return res;
}
int main()
{
lli t , n , bitsA , bitsB , res , _min , _max;
char c;
cin>>t , init();
while(t--)
{
cin>>n , bitsA = 0 , bitsB = 0;
REP(i , n) cin>>c , bitsA += c - '0';
REP(i , n) cin>>c , bitsB += c - '0';
res = 0;
_max = bitsA + bitsB - 2 * max((lli)0 , bitsB + bitsA - n);
_min = abs(bitsA - bitsB);
for(int i=_max;i>=_min;i-=2)
{
lli tmp = (power(fact[i] , mod-2) * fact[n]) % mod;
tmp = (tmp * power(fact[n-i] , mod-2)) % mod;
res = (res + tmp) % mod;
}
cout<<res<<endl;
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBSRVAoaSxuKSBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspCiNkZWZpbmUgbW9kIDEwMDAwMDAwMDcKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBmZiBmaXJzdAojZGVmaW5lIHNzIHNlY29uZAojZGVmaW5lIGlpIHBhaXI8aW50LGludD4KI2RlZmluZSB2aSB2ZWN0b3I8aW50PgojZGVmaW5lIHZpaSB2ZWN0b3I8aWk+CiNkZWZpbmUgbGxpIGxvbmcgbG9uZyBpbnQKI2RlZmluZSBJTkYgMTAwMDAwMDAwMAojZGVmaW5lIGVuZGwgJ1xuJwpjb25zdCBkb3VibGUgUEkgPSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2MDsKdHlwZWRlZiBzdGQ6OmNvbXBsZXg8ZG91YmxlPiBDb21wbGV4Owp0eXBlZGVmIHN0ZDo6dmFsYXJyYXk8Q29tcGxleD4gQ0FycmF5OwoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKbGxpIGZhY3RbMTAwMDAxXTsKaW50IE4gPSAxMDAwMDA7Cgp2b2lkIGluaXQoKQp7CglmYWN0WzBdID0gMTsKCVJFUChpICwgTikgZmFjdFtpXSA9IChmYWN0W2ktMV0gKiBpKSAlIG1vZDsKfQoKbGxpIHBvd2VyKGxsaSBhICwgbGxpIG4pCnsKCWxsaSByZXMgPSAxOwoJd2hpbGUobikKCXsKCQlpZihuICYgMSkKCQkJcmVzID0gKHJlcyAqIGEpICUgbW9kOwoJCQoJCW4gPj49IDE7CgkJYSA9IChhICogYSkgJSBtb2Q7Cgl9CgkKCXJldHVybiByZXM7Cn0KaW50IG1haW4oKQp7CglsbGkgdCAsIG4gLCBiaXRzQSAsIGJpdHNCICwgcmVzICwgX21pbiAsIF9tYXg7CgljaGFyIGM7CgkKCWNpbj4+dCAsIGluaXQoKTsKCXdoaWxlKHQtLSkKCXsKCQljaW4+Pm4gLCBiaXRzQSA9IDAgLCBiaXRzQiA9IDA7CgkJUkVQKGkgLCBuKSBjaW4+PmMgLCBiaXRzQSArPSBjIC0gJzAnOwoJCVJFUChpICwgbikgY2luPj5jICwgYml0c0IgKz0gYyAtICcwJzsKCQkKCQlyZXMgPSAwOwoJCV9tYXggPSBiaXRzQSArIGJpdHNCIC0gMiAqIG1heCgobGxpKTAgLCBiaXRzQiArIGJpdHNBIC0gbik7CgkJX21pbiA9IGFicyhiaXRzQSAtIGJpdHNCKTsKCQkKCQlmb3IoaW50IGk9X21heDtpPj1fbWluO2ktPTIpCgkJewoJCQlsbGkgdG1wID0gKHBvd2VyKGZhY3RbaV0gLCBtb2QtMikgKiBmYWN0W25dKSAlIG1vZDsKCQkJdG1wID0gKHRtcCAqIHBvd2VyKGZhY3Rbbi1pXSAsIG1vZC0yKSkgJSBtb2Q7CgkJCQoJCQlyZXMgPSAocmVzICsgdG1wKSAlIG1vZDsKCQl9CgkJCgkJY291dDw8cmVzPDxlbmRsOwoJfQp9Cg==