import sys
def solve():
input_data = sys.stdin.read().split()
if not input_data:
return
n = int(input_data[0])
m = int(input_data[1])
q = int(input_data[2])
# Для каждого столбца от 1 до m найдем минимальный x среди всех запросов, у которых y <= столбца.
# Инициализируем бесконечностью (n + 1)
min_x = [n + 1] * (m + 1)
idx = 3
for _ in range(q):
x = int(input_data[idx])
y = int(input_data[idx+1])
idx += 2
if x < min_x[y]:
min_x[y] = x
# Распространяем влияние полива направо (поскольку полив в точке (x, y) захватывает все j >= y)
# Значит, минимальный x для столбца j будет зависеть от минимального x среди всех столбьев <= j
current_min = n + 1
for j in range(1, m + 1):
if min_x[j] < current_min:
current_min = min_x[j]
min_x[j] = current_min
# Считаем количество политых клеток
total_polited = 0
for j in range(1, m + 1):
if min_x[j] <= n:
# Если столбец поливается начиная со строки min_x[j] до n,
# то в этом столбце полито (n - min_x[j] + 1) клеток.
total_polited += (n - min_x[j] + 1)
total_cells = n * m
ans = total_cells - total_polited
print(ans)
if __name__ == '__main__':
solve()