在 21XX 年,IOI 星球的居民计划移民到一个新发现的行星。
这个新行星上有一块田地,是一个 $R$ 行 $C$ 列的矩形网格。列平行于南北方向,行平行于东西方向。从北往南数第 $i$ 行、从西往东数第 $j$ 列的单元格称为单元格 $(i, j)$。田地的西北角是单元格 $(1, 1)$,东南角是单元格 $(R, C)$。每年,IOI 星球的居民都会选择吹向田地的风向。风向可以是东、西、南、北四个方向之一。
为了在新行星上进行农业生产,他们将在新行星的田地里种植“JOI 草”。在移民的第一年春天,田地里有 $N$ 个单元格长有 JOI 草。
JOI 草的范围会随风扩张。每年夏天,JOI 草的种子会被居民选择的风吹向对应的方向。种子会向风向移动一个单元格并落地。如果种子落在一个没有 JOI 草的单元格上,那么在第二年春天,该单元格就会长出 JOI 草。一旦一个单元格长出了 JOI 草,它在未来将一直保持有 JOI 草。
我们希望计算出,如果我们适当地调整风向,直到田地里所有单元格都长满 JOI 草所需的最少年份。
输入格式
从标准输入读取以下数据。
- 第一行包含两个空格分隔的整数 $R, C$。这表示田地是一个 $R$ 行 $C$ 列的矩形网格。
- 第二行包含一个整数 $N$,表示移民第一年春天田地里长有 JOI 草的单元格数量。
- 接下来的 $N$ 行中,第 $i$ 行($1 \le i \le N$)包含两个空格分隔的整数 $S_i, E_i$。这表示单元格 $(S_i, E_i)$ 在移民第一年春天长有 JOI 草。
输出格式
向标准输出写入一行。输出内容为在适当地调整风向的情况下,直到田地里所有单元格都长满 JOI 草所需的最少年份。
数据范围
所有输入数据满足以下条件:
- $1 \le N \le 300$
- $1 \le R \le 1\,000\,000\,000$
- $1 \le C \le 1\,000\,000\,000$
- $1 \le S_i \le R$ ($1 \le i \le N$)
- $1 \le E_i \le C$ ($1 \le i \le N$)
- 在移民第一年春天,田地里存在没有 JOI 草的单元格。
- $(S_i, E_i) \neq (S_j, E_j)$ ($1 \le i < j \le N$)
子任务
共有 6 个子任务。各子任务的分值和附加限制如下:
- 子任务 1 [5 分]:$R \le 4, C \le 4$
- 子任务 2 [10 分]:$R \le 40, C \le 40$
- 子任务 3 [15 分]:$R \le 40$
- 子任务 4 [30 分]:$N \le 25$
- 子任务 5 [20 分]:$N \le 100$
- 子任务 6 [20 分]:无附加限制。
样例
输入格式 1
3 4 3 1 2 1 4 2 3
输出格式 1
3
说明 1
在样例输入 1 中,移民第一年春天以下单元格长有 JOI 草:
新行星上的田地;标有‘0’的单元格在移民第一年春天长有 JOI 草。
在此样例输入中,如果我们选择前 3 年的风向分别为西、南、南,那么 3 年后的春天所有单元格都将长满 JOI 草。下表描述了每个单元格在哪个春天长出 JOI 草。这是最少年份。
1 0 1 0 2 1 0 2 3 2 2 3
输入格式 2
4 4 4 1 1 1 4 4 1 4 4
输出格式 2
4