#include #include #include #define ll int using namespace std; const ll N=1e5+10; ll T,n; string s1,s2,t1,t2; inline ll lowbit(ll x){return x&(-x);} inline ll popct(ll x){ ll ret=0; while(x){x-=lowbit(x);ret++;} return ret; } void solvemin(){ ll mx=(1<>(j-1))&1)!=s1[j]-'0'||o1!=oi){ flag=0; break; } o1=oi=0; } else{ o1+=(s1[j]=='1'); oi+=((i>>(j-1)&1)); } } if(o1!=oi) flag=0; if(!flag) continue; for(ll k=0;k>(j-1))&1)!=s2[j]-'0'||o1!=oi){ flag=0; break; } o1=oi=0; } else{ o1+=(s2[j]=='1'); oi+=((k>>(j-1)&1)); } } if(o1!=oi) flag=0; if(!flag) continue; ll nans=0; for(ll ps=0;ps>ps)&1)==((k>>ps)&1)); ans=max(ans,nans); } } cout<>n>>s1>>s2>>t1>>t2; s1=' '+s1,s2=' '+s2,t1=' '+t1,t2=' '+t2; if(n<=10){ solvemin(); return; } bool A=1; ll ans=0; for(ll i=1;i<=n;i++){ ans+=(s1[i]==s2[i]); if(i>1&&s1[i]!=s1[i-1]) A=0; } if(A){ cout<=1;i--){ nxts1[i]=nxts1[i+1]; nxts2[i]=nxts2[i+1]; if(t1[i]=='0') nxts1[i]=i; if(t2[i]=='0') nxts2[i]=i; } s1pos=nxts1[1],s2pos=nxts2[1]; for(ll i=1;i>T; while(T--) solve(); return 0; }