length, width, height = map(int, input().split())
n = int(input())
cube = [list(map(int, input().split())) for _ in range(n)]
volume = length * width * height # 박스의 부피
ans = 0
before = 0
cube.sort(reverse=True) # 큰 큐브부터 채워야하므로 역순 정렬
for w, cnt in cube: # 큐브의 크기, 갯수
before <<= 3 # 쉬프트 연산 3이므로 8을 곱하게 된다.
v = 2 ** w # 큐브의 가로, 세로, 높이
maxCnt = (length // v) * (width // v) * (height // v) - before
maxCnt = min(cnt, maxCnt) # 큐브 갯수 만큼 카운트
ans += maxCnt # 큐브 갯수 카운트
before += maxCnt # 박스의 크기를 새로 계산 하기 위해 넣는다.
if before == volume:
print(ans)
else:
print(-1)