# PROBLEM - 배
# TIER - G5
# NUMBER - 1092
# DATE - 2022-08-21 22:26
# IDEA - 크레인, 박스를 전부 역순으로 정렬한 후에
# 박스, 크레인 각각 순회해서
# 만약 크레인 >= 박스 인 경우
# 크레인 += 1 해주는 식으로 큰 박스부터 처리
# PS : 무조건 배열의 길이를 할당해주는 친구는 -1 !!
# 이거 잘못지정해서 틀림 ㅠ
import sys
input = sys.stdin.readline
N = int(input())
crane = sorted(list(map(int, input().split())), reverse=True)
M = int(input())
box = sorted(list(map(int, input().split())), reverse=True)
count = 0
prev = -1
while len(box) > 0:
count += 1
c = i = 0
while i < len(box) and c < len(crane): # 크레인, 박스 범위 안 순회
if crane[c] >= box[i]: # 크레인이 박스보다 큰 경우
box[i] = 0 # 박스를 지워주고
c += 1 # 크레인 idx += 1 해서 그 다음 크레인을 기준값으로 순회
i += 1
box = [i for i in box if i] # 0인 박스를 걸러줌 (그냥 바로 pop하면 idxError)
if prev == len(box): # 근데 만약 내 크레인으로 0을 못만드는 큰 박스가 있으면
print(-1) # -1 출력
exit() # 만약 크레인 최대가 32인데 33의 박스가 들어있으면 while을 몇번 돌아도
prev = len(box) # 안변하므로 prev == len(box) 일 경우 -> -1 이 성립한다
print(count)