1 /*
2 a or c = b,已知a和b,求c可能有多少种值。
3 对比二进制每一位,如果A为1,B为0,则不可能,如果A为1,B为1,则C的这一位可以
4 是0也可以是1,所以结果乘以2,其他情况C的这一位必须和B一致,所以结果不变。
5 */
6 #include <bits/stdc++.h>
7 using namespace std;
8 const int mod=1000000007;
9 int main()
10 {
11 char a[110],b[110];
12 int n;
13 scanf("%d",&n);
14 while(n--)
15 {
16 int len;
17 scanf("%d%s%s",&len,a,b);
18 int ans=1;
19 for(int i=0; i<len; i++)
20 {
21 if(a[i]=='1'&&b[i]=='0')
22 {
23 printf("IMPOSSIBLE\n");
24 ans=0;
25 break;
26 }
27 if(a[i]=='1'&&b[i]=='1') ans=(ans*2)%mod;
28 }
29 ans=ans%mod;
30 if(ans!=0)
31 printf("%d\n",ans);
32
33 }
34 }