#include #include #include #include #define rep(i, n) for(i = 0; i < n; i++) #define int long long using namespace std; using namespace atcoder; const int INF = 1e+9; int n, a; int b[50]; int c; int d[50]; signed main() { int i, j; cin >> n >> a; rep(i, a) cin >> b[i]; cin >> c; rep(i, c) cin >> d[i]; sort(b, b + a, greater()); sort(d, d + c); mf_graph g(a + c + 2); int s = a + c, t = s + 1; rep(i, a) { int x = n / a; if (i < n % a) x++; g.add_edge(s, i, x); } rep(i, c) { int x = n / c; if (i < n % c) x++; g.add_edge(a + i, t, x); } rep(i, a) { rep(j, c) { if (b[i] > d[j]) { g.add_edge(i, a + j, INF); } } } cout << g.flow(s, t) << endl; return 0; }