#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; long long MOD = 1000000007; vector W,B; int solve( int x, bool t ) { int ret = 1; vector::iterator it; while ( true ) { if ( t ) { it = lower_bound( B.begin(), B.end(), x ); if ( it == B.begin() ) { break; } x = B[ it - B.begin() - 1 ]; } else { it = lower_bound( W.begin(), W.end(), x ); if ( it == W.begin() ) { break; } x = W[ it - W.begin() - 1 ]; } t = !t; ret++; } return ret; } int main() { int NW,NB; cin >> NW; W.resize(NW); for ( int i = 0; i < NW; i++ ) { cin >> W[i]; } cin >> NB; B.resize(NB); for ( int i = 0; i < NB; i++ ) { cin >> B[i]; } sort( W.begin(), W.end() ); sort( B.begin(), B.end() ); cout << max( solve( W[NW-1], true ), solve( B[NB-1], false ) ) << endl; return 0; }