#include #include #include #include #include using namespace std; const int INF = 1e9; int main() { int n, m; vector a, b; cin >> n; a.assign(n, 0); for (int i = 0; i < n; i++) { cin >> a[i]; } cin >> m; b.assign(m, 0); for (int i = 0; i < m; i++) { cin >> b[i]; } sort(a.begin(), a.end()); sort(b.begin(), b.end(), greater()); b.push_back(INF); int min_idx = INF; int a_idx, b_idx, rest; do { a_idx = 0; b_idx = 0; rest = b[b_idx]; while(a_idx < n) { if (a[a_idx] <= rest) { rest -= a[a_idx]; a_idx++; } else { b_idx++; rest = b[b_idx]; } } if (b_idx < m) { min_idx = min(min_idx, b_idx); } } while (next_permutation(a.begin(), a.end())); int ans = min_idx == INF ? -1 : min_idx + 1; cout << ans << endl; return 0; }