#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define INF 1000000000 #define rep(i,a,b) for (int i=(a);i<(b);i++) #define rev(i,a,b) for (int i=(a)-1;i>=b;i--) using namespace std; typedef long long ll; typedef pair pii; typedef queue qi; typedef vector vi; typedef vector vs; int dx[4] = { 0, 1, 0, -1 }; int dy[4] = { 1, 0, -1, 0 }; int main() { cin.tie(0); ios::sync_with_stdio(false); int nw, nb; cin >> nw; vi w(nw); rep(i,0,nw) cin >> w[i]; cin >> nb; vi b(nb); rep(i,0,nb) cin >> b[i]; sort(w.begin(), w.end(), greater()); sort(b.begin(), b.end(), greater()); int ans1 = 1; int i = 0, j = 0, num = w[0]; bool flag = true; while(i < w.size() || j < b.size()) { if(flag) { while(j < b.size() && num <= b[j]) j++; if(j == b.size()) break; num = b[j]; ans1++; } else { while(i < w.size() && num <= w[i]) i++; if(i == w.size()) break; num = w[i]; ans1++; } flag = !flag; } int ans2 = 1; i = j = 0; num = b[0]; flag = false; while(i <= w.size() || j <= b.size()) { if(flag) { while(j < b.size() && num <= b[j]) j++; if(j == b.size()) break; num = b[j]; ans2++; } else { while(i < w.size() && num <= w[i]) i++; if(i == w.size()) break; num = w[i]; ans2++; } flag = !flag; } cout << max(ans1, ans2) << endl; return 0; }