#include using namespace std; long long n, a[1000005], b[1000005]; long long jediniceA[23]; long long jediniceB[23]; long long stepeni[23]; struct outp { long long l1,l2,l3; bool k = false; }; vector output; bool modifikovan[1000006]; struct oper { long long l1,l2; bool operator<(oper& other) { return l2 < other.l2; } bool operator<(const oper& other) const { return l2 < other.l2; } }; map mapa; map parse; int main() { freopen("homework.in", "r", stdin); freopen("homework.out", "w", stdout); stepeni[0] = 1; for (int i=1;i<=21;i++) stepeni[i] = stepeni[i-1]*2; cin>>n; for (int i=1;i<=n;i++) cin>>a[i]; for (int i=1;i<=n;i++) cin>>b[i]; /*a[2] = 2097151; b[2] = 2097151;*/ for(int i=1;i<=n;i++) { for(int j=0;j<=20;j++) { if (a[i]&stepeni[j]) jediniceA[j]++; if (b[i]&stepeni[j]) jediniceB[j]++; } } long long dodati = 0; long long sve = 0; for(int i=0;i<=20;i++) sve |= stepeni[i]; for (int i=0;i<=20;i++) { if (jediniceA[i]==n) { if (jediniceB[i]==n) continue; if (jediniceB[i]==0) { if (n%2==0) { outp s; s.l1 = 3; s.l2 = 1; s.l3 = stepeni[i]; output.push_back(s); continue; } else { outp s; s.l1 = 2; s.l2 = 1; s.l3 = stepeni[i]; output.push_back(s); outp s2; s.l1 = 3; s.l2 = 2; s.l3 = stepeni[i]; output.push_back(s); continue; } } else { if ((n%2==0 && jediniceB[i]%2==1) || (n%2==1 && jediniceB[i]%2==0)){ for(int j=1;j<=n;j++) if (!(b[j]&stepeni[i])) { outp s; s.l1 = 1; s.l2 = j; unsigned int k = stepeni[i]; k = ~k; s.l3 = k; s.k=true; output.push_back(s); break; } continue; } if ((n%2==0 && jediniceB[i]%2==0) || (n%2==1 && jediniceB[i]%2==1)){ for(int j=1;j<=n;j++) if (!(b[j]&stepeni[i])) { outp s; s.l1 = 3; s.l2 = j; s.l3 = stepeni[i]; output.push_back(s); break; } continue; } } } else if (jediniceB[i]==n) { if (jediniceA[i]==n) continue; if (jediniceA[i]==0) { if (n%2==0) { outp s; s.l1 = 3; s.l2 = 1; s.l3 = stepeni[i]; output.push_back(s); continue; } else { outp s; s.l1 = 2; s.l2 = 1; s.l3 = stepeni[i]; output.push_back(s); outp s2; s.l1 = 3; s.l2 = 2; s.l3 = stepeni[i]; output.push_back(s); continue; } } else { if ((n%2==0 && jediniceA[i]%2==1) || (n%2==1 && jediniceA[i]%2==0)){ for(int j=1;j<=n;j++) if (!(a[j]&stepeni[i])) { outp s; s.l1 = 1; s.l2 = j; unsigned int k = stepeni[i]; k = ~k; s.l3 = k; s.k = true; output.push_back(s); break; } continue; } if ((n%2==0 && jediniceA[i]%2==0) || (n%2==1 && jediniceA[i]%2==1)){ for(int j=1;j<=n;j++) if (!(a[j]&stepeni[i])) { outp s; s.l1 = 3; s.l2 = j; s.l3 = stepeni[i]; output.push_back(s); break; } continue; } } } else { if (jediniceA[i]==0 && jediniceB[i]==0) continue; if ((jediniceA[i]==0 && jediniceB[i]%2==1)){ for(int j=1;j<=n;j++) if ((b[j]&stepeni[i])) { outp s; s.l1 = 2; s.l2 = j; s.l3 = stepeni[i]; output.push_back(s); break; } continue; } if ((jediniceA[i]==0 && jediniceB[i]%2==0)){ for(int j=1;j<=n;j++) if ((b[j]&stepeni[i])) { outp s; s.l1 = 3; s.l2 = j; s.l3 = stepeni[i]; output.push_back(s); break; } continue; } if ((jediniceB[i]==0 && jediniceA[i]%2==1)){ for(int j=1;j<=n;j++) if ((a[j]&stepeni[i])) { outp s; s.l1 = 2; s.l2 = j; s.l3 = stepeni[i]; output.push_back(s); break; } continue; } if ((jediniceB[i]==0 && jediniceA[i]%2==0)){ for(int j=1;j<=n;j++) if ((a[j]&stepeni[i])) { outp s; s.l1 = 3; s.l2 = j; s.l3 = stepeni[i]; output.push_back(s); break; } continue; } if ((jediniceA[i]%2==0 && jediniceB[i]%2==0) || (jediniceA[i]%2==1 && jediniceB[i]%2==1)) continue; if ((jediniceA[i]%2==0 && jediniceB[i]%2==1)){ if (jediniceA[i] > jediniceB[i]) { for(int j=1;j<=n;j++) if ((a[j]&stepeni[i]) && !(b[j]&stepeni[i])) { outp s; s.l1 = 2; s.l2 = j; s.l3 = stepeni[i]; output.push_back(s); break; } } else { for(int j=1;j<=n;j++) if ((b[j]&stepeni[i]) && !(a[j]&stepeni[i])) { outp s; s.l1 = 2; s.l2 = j; s.l3 = stepeni[i]; output.push_back(s); break; } } continue; } if ((jediniceA[i]%2==1 && jediniceB[i]%2==0)){ if (jediniceA[i] > jediniceB[i]) { for(int j=1;j<=n;j++) if ((a[j]&stepeni[i]) && !(b[j]&stepeni[i])) { outp s; s.l1 = 2; s.l2 = j; s.l3 = stepeni[i]; output.push_back(s); break; } } else { for(int j=1;j<=n;j++) if ((b[j]&stepeni[i]) && !(a[j]&stepeni[i])) { outp s; s.l1 = 2; s.l2 = j; s.l3 = stepeni[i]; output.push_back(s); break; } } continue; } } cout<<1/0; } if (n>20) { for (int i=0;i::iterator it=mapa.begin(); it!=mapa.end(); ++it) { outp p = parse[it->first]; cout<second<