INF = 1 << 60 N = int(input()) A = list(map(int, input().split())) # おもちゃ M = int(input()) B = list(map(int, input().split())) # はこ B.sort(reverse=True) ans = INF dp = [[False] * (1 << N) for _ in range(M+1)] # i : i 番目の箱までみて # j : 箱に入れたおもちゃ達 j (ビット列) dp[0][0] = True mask = (1 << N) - 1 for i in range(M): for a in range(1 << N): if dp[i][a] == 0: continue bmask = mask ^ a b = bmask while b: # 箱 i に入れるおもちゃ(ビット列) cap = 0 for k in range(N): if b & (1 << k): cap += A[k] if cap <= B[i]: dp[i+1][a | b] = True if (a | b) == mask: ans = min(ans, i+1) b = (b - 1) & bmask if ans == INF: print(-1) else: print(ans)