#include using namespace std; typedef long long ll; typedef long double ld; #define REP(i, n) for (int i = 0; i < (n); ++i) #define REPR(i, n) for (int i = n - 1; i >= 0; --i) #define FOR(i, m, n) for (int i = m; i < n; ++i) #define FORR(i, m, n) for (int i = m; i >= n; --i) #define ALL(v) (v).begin(),(v).end() templatebool chmax(T &a, const T &b) { if (abool chmin(T &a, const T &b) { if (b> n; vector s(n),t(n); REP(i,n) cin >> s[i]; REP(i,n) cin >> t[i]; vector r(n),c(n); int ans=0; REP(i,n){ REP(j,n){ if(s[i]==2||t[j]==2){ ans++; r[i]=true,c[j]=true; } } } queue> q1,q2; REP(i,n){ REP(j,n){ if(s[i]==1&&t[j]==1){ if(!r[i]&&c[j]){ q1.push({i,j}); } if(!r[i]||!c[j]){ q2.push({i,j}); } } } } while(!q1.empty()){ auto p=q1.front(); q1.pop(); int u=p.first,v=p.second; if(!r[u]&&!c[v]){ ans++; r[u]=true,c[v]=true; } else if(!r[u]||!c[v]){ q2.push({u,v}); } } while(!q2.empty()){ auto p=q2.front(); q2.pop(); int u=p.first,v=p.second; if(!r[u]||!c[v]){ ans++; r[u]=true,c[v]=true; } } cout << ans << endl; }