#!/usr/bin/python
# -*- coding: utf8 -*-
#
# Задача "Большой квадратный кусок"
# Третья командная Интернет-олимпиада сезона 2010-2011, усложненный уровень
# Автор задачи: Антон Ахи
# Автор решения: Владимир Ульянцев, ulyantsev@rain.ifmo.ru

MAXN = 1e9
MAXK = 1e5

with open('maxpiece.in') as inf:
    n, m, k = [int(s) for s in inf.readline().split()]
    assert 1 <= n <= MAXN
    assert 1 <= m <= MAXN
    assert 0 <= k <= MAXK

    hor, ver = [], []
    for st in inf:
        t, v = [int(s) for s in st.split()]
        if t == 0:
            ver += [v]
            assert 0 <= v <= n
        elif t == 1:
            hor += [v]
            assert 0 <= v <= m
        else:
            assert False

    assert len(hor) + len(ver) == k

ver += [0, n]
hor += [0, m]

ver.sort()
hor.sort()

max_v = max([ver[i] - ver[i - 1] for i in xrange(1, len(ver))])
max_h = max([hor[i] - hor[i - 1] for i in xrange(1, len(hor))])

print >>open('maxpiece.out', 'w'), min(max_v, max_h)
