import itertools

def solve():
    import sys
    sys.setrecursionlimit(1 << 25)
    N = int(sys.stdin.readline())
    A = list(map(int, sys.stdin.readline().split()))
    M = int(sys.stdin.readline())
    B = list(map(int, sys.stdin.readline().split()))
    
    max_A = max(A) if N > 0 else 0
    sum_A = sum(A)
    sum_B = sum(B)
    max_B = max(B) if M > 0 else 0
    
    if max_A > max_B or sum_A > sum_B:
        print(-1)
        return
    
    n = len(A)
    sum_mask = [0] * (1 << n)
    for mask in range(1 << n):
        s = 0
        for i in range(n):
            if mask & (1 << i):
                s += A[i]
        sum_mask[mask] = s
    
    for k in range(1, M + 1):
        for boxes in itertools.combinations(B, k):
            if sum(boxes) < sum_A:
                continue
            sorted_boxes = sorted(boxes, reverse=True)
            if sorted_boxes[0] < max_A:
                continue
            target_boxes = sorted_boxes
            
            from functools import lru_cache

            @lru_cache(maxsize=None)
            def backtrack(i, mask):
                if mask == 0 and i == k:
                    return True
                if i >= k:
                    return False
                if mask == 0:
                    return False
                remaining_boxes = k - i
                available_toys = bin(mask).count('1')
                if available_toys < remaining_boxes:
                    return False
                current_cap = target_boxes[i]
                s = mask
                while True:
                    if s == 0:
                        break
                    if (s & mask) != s:
                        s = (s - 1) & mask
                        continue
                    sum_s = sum_mask[s]
                    if sum_s > current_cap:
                        s = (s - 1) & mask
                        continue
                    cnt_s = bin(s).count('1')
                    if cnt_s == 0:
                        s = (s - 1) & mask
                        continue
                    new_mask = mask ^ s
                    remaining_toys = bin(new_mask).count('1')
                    if remaining_toys < (remaining_boxes - 1):
                        s = (s - 1) & mask
                        continue
                    if backtrack(i + 1, new_mask):
                        return True
                    s = (s - 1) & mask
                return False
            
            if backtrack(0, (1 << n) - 1):
                print(k)
                return
    
    print(-1)

solve()