#include <cmath>
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <set>
#include <map>
#include <list>
#include <time.h>
#include <math.h>
#include <random>
#include <deque>
#include <queue>
#include <cassert>
#include <unordered_map>
#include <unordered_set>
#include <iomanip>
#include <bitset>
#include <sstream>
#include <chrono>
#include <cstring>
using namespace std;
typedef long long ll;
#ifdef iq
mt19937 rnd(228);
#else
mt19937 rnd(chrono::high_resolution_clock::now().time_since_epoch().count());
#endif
const int N = 1e5 + 7;
const int M = 1e9 + 7;
int add(int a, int b) {
int c = a + b;
if (c < 0) c += M;
if (c >= M) c -= M;
return c;
}
int mul(int a, int b) {
return (a * (ll) b) % M;
}
int pw(int a, int n) {
int res = 1;
while (n) {
if (n % 2 == 0) {
a = mul(a, a);
n /= 2;
} else {
res = mul(res, a);
n--;
}
}
return res;
}
int inv(int x) {
return pw(x, M - 2);
}
int main() {
#ifdef iq
freopen("a.in", "r", stdin);
#endif
ios::sync_with_stdio(0);
cin.tie(0);
int t;
cin >> t;
while (t--) {
int n;
cin >> n;
vector <int> fact(n + 1), rfact(n + 1);
fact[0] = 1;
for (int i = 1; i <= n; i++) {
fact[i] = mul(fact[i - 1], i);
}
rfact[n] = inv(fact[n]);
for (int i = n - 1; i >= 0; i--) {
rfact[i] = mul(rfact[i + 1], i + 1);
}
auto C = [&] (int n, int k) {
return mul(fact[n], mul(rfact[k], rfact[n - k]));
};
string a, b;
cin >> a >> b;
vector <int> x(2), y(2);
for (auto c : a) {
x[c - '0']++;
}
for (auto c : b) {
y[c - '0']++;
}
int l = 0, r = 0;
for (int ts = 0; ts < 2; ts++) {
auto _x = x, _y = y;
int ret = 0;
for (int i = 0; i < 2; i++) {
int a = min(_x[i], _y[i ^ ts]);
_x[i] -= a, _y[i ^ ts] -= a;
ret += (ts * a);
}
for (int i = 0; i < 2; i++) {
int a = min(_x[i], _y[i ^ ts ^ 1]);
_x[i] -= a, _y[i ^ ts ^ 1] -= a;
ret += ((ts ^ 1) * a);
}
if (ts == 0) l = ret;
else r = ret;
}
int sum = 0;
for (int i = l; i <= r; i += 2) {
sum = add(sum, C(n, i));
}
cout << sum << endl;
}
}
I2luY2x1ZGUgPGNtYXRoPgojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxhbGdvcml0aG0+CiNpbmNsdWRlIDxzdHJpbmc+CiNpbmNsdWRlIDxzZXQ+CiNpbmNsdWRlIDxtYXA+CiNpbmNsdWRlIDxsaXN0PgojaW5jbHVkZSA8dGltZS5oPgojaW5jbHVkZSA8bWF0aC5oPgojaW5jbHVkZSA8cmFuZG9tPgojaW5jbHVkZSA8ZGVxdWU+CiNpbmNsdWRlIDxxdWV1ZT4KI2luY2x1ZGUgPGNhc3NlcnQ+CiNpbmNsdWRlIDx1bm9yZGVyZWRfbWFwPgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KI2luY2x1ZGUgPGlvbWFuaXA+CiNpbmNsdWRlIDxiaXRzZXQ+CiNpbmNsdWRlIDxzc3RyZWFtPgojaW5jbHVkZSA8Y2hyb25vPgojaW5jbHVkZSA8Y3N0cmluZz4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKCiNpZmRlZiBpcQogIG10MTk5Mzcgcm5kKDIyOCk7CiNlbHNlCiAgbXQxOTkzNyBybmQoY2hyb25vOjpoaWdoX3Jlc29sdXRpb25fY2xvY2s6Om5vdygpLnRpbWVfc2luY2VfZXBvY2goKS5jb3VudCgpKTsKI2VuZGlmCgpjb25zdCBpbnQgTiA9IDFlNSArIDc7CmNvbnN0IGludCBNID0gMWU5ICsgNzsKCmludCBhZGQoaW50IGEsIGludCBiKSB7CiAgaW50IGMgPSBhICsgYjsKICBpZiAoYyA8IDApIGMgKz0gTTsKICBpZiAoYyA+PSBNKSBjIC09IE07CiAgcmV0dXJuIGM7Cn0KCmludCBtdWwoaW50IGEsIGludCBiKSB7CiAgcmV0dXJuIChhICogKGxsKSBiKSAlIE07Cn0KCmludCBwdyhpbnQgYSwgaW50IG4pIHsKICBpbnQgcmVzID0gMTsKICB3aGlsZSAobikgewogICAgaWYgKG4gJSAyID09IDApIHsKICAgICAgYSA9IG11bChhLCBhKTsKICAgICAgbiAvPSAyOwogICAgfSBlbHNlIHsKICAgICAgcmVzID0gbXVsKHJlcywgYSk7CiAgICAgIG4tLTsKICAgIH0KICB9CiAgcmV0dXJuIHJlczsKfQoKaW50IGludihpbnQgeCkgewogIHJldHVybiBwdyh4LCBNIC0gMik7Cn0KCmludCBtYWluKCkgewojaWZkZWYgaXEKICBmcmVvcGVuKCJhLmluIiwgInIiLCBzdGRpbik7CiNlbmRpZgogIGlvczo6c3luY193aXRoX3N0ZGlvKDApOwogIGNpbi50aWUoMCk7CiAgaW50IHQ7CiAgY2luID4+IHQ7CiAgd2hpbGUgKHQtLSkgewogICAgaW50IG47CiAgICBjaW4gPj4gbjsKICAgIHZlY3RvciA8aW50PiBmYWN0KG4gKyAxKSwgcmZhY3QobiArIDEpOwogICAgZmFjdFswXSA9IDE7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKICAgICAgZmFjdFtpXSA9IG11bChmYWN0W2kgLSAxXSwgaSk7CiAgICB9CiAgICByZmFjdFtuXSA9IGludihmYWN0W25dKTsKICAgIGZvciAoaW50IGkgPSBuIC0gMTsgaSA+PSAwOyBpLS0pIHsKICAgICAgcmZhY3RbaV0gPSBtdWwocmZhY3RbaSArIDFdLCBpICsgMSk7CiAgICB9CiAgICBhdXRvIEMgPSBbJl0gKGludCBuLCBpbnQgaykgewogICAgICByZXR1cm4gbXVsKGZhY3Rbbl0sIG11bChyZmFjdFtrXSwgcmZhY3RbbiAtIGtdKSk7CiAgICB9OwogICAgc3RyaW5nIGEsIGI7CiAgICBjaW4gPj4gYSA+PiBiOwogICAgdmVjdG9yIDxpbnQ+IHgoMiksIHkoMik7CiAgICBmb3IgKGF1dG8gYyA6IGEpIHsKICAgICAgeFtjIC0gJzAnXSsrOwogICAgfQogICAgZm9yIChhdXRvIGMgOiBiKSB7CiAgICAgIHlbYyAtICcwJ10rKzsKICAgIH0KICAgIGludCBsID0gMCwgciA9IDA7CiAgICBmb3IgKGludCB0cyA9IDA7IHRzIDwgMjsgdHMrKykgewogICAgICBhdXRvIF94ID0geCwgX3kgPSB5OwogICAgICBpbnQgcmV0ID0gMDsKICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyOyBpKyspIHsKICAgICAgICBpbnQgYSA9IG1pbihfeFtpXSwgX3lbaSBeIHRzXSk7CiAgICAgICAgX3hbaV0gLT0gYSwgX3lbaSBeIHRzXSAtPSBhOwogICAgICAgIHJldCArPSAodHMgKiBhKTsKICAgICAgfQogICAgICBmb3IgKGludCBpID0gMDsgaSA8IDI7IGkrKykgewogICAgICAgIGludCBhID0gbWluKF94W2ldLCBfeVtpIF4gdHMgXiAxXSk7CiAgICAgICAgX3hbaV0gLT0gYSwgX3lbaSBeIHRzIF4gMV0gLT0gYTsKICAgICAgICByZXQgKz0gKCh0cyBeIDEpICogYSk7CiAgICAgIH0KICAgICAgaWYgKHRzID09IDApIGwgPSByZXQ7CiAgICAgIGVsc2UgciA9IHJldDsKICAgIH0KICAgIGludCBzdW0gPSAwOwogICAgZm9yIChpbnQgaSA9IGw7IGkgPD0gcjsgaSArPSAyKSB7CiAgICAgIHN1bSA9IGFkZChzdW0sIEMobiwgaSkpOwogICAgfQogICAgY291dCA8PCBzdW0gPDwgZW5kbDsKICB9Cn0=