# 배
# https://www.acmicpc.net/problem/1092 (탐욕)
# boxes : [8, 8, 4, 2, 2]
# cranes : [ 6, 9, 8 ]
# crane_queue: [[4, 2], [8, 2], [8]]
def run(cranes, boxes):
boxes.sort(reverse=True) # ((큰 박스 순서대로 선택해서)) 처리한다
crane_queue = [[] for _ in range(N)]
for box in boxes:
# 작업 가능 크레인 확인
idxes = [i for i, crane in enumerate(cranes) if crane >= box]
if len(idxes) == 0:
return -1
# 대기열이 작은 크레인 확인
idx, min_v = -1, 1e9
for i in idxes:
if len(crane_queue[i]) < min_v:
min_v = len(crane_queue[i])
idx = i
# 해당 크레인에 작업 할당
crane_queue[idx].append(box)
res = max([len(x) for x in crane_queue])
return res
N = int(input())
cranes = list(map(int, input().split()))
M = int(input())
boxes = list(map(int, input().split()))
ans = run(cranes, boxes)
print(ans)