Byteman 拥有 Bytetown 最美丽的花园。他在花园里种植了 $n$ 朵玫瑰。夏天到了,花朵长得又大又漂亮。Byteman 意识到自己无法独自照顾所有的玫瑰。他决定雇佣两名园丁来帮助他。他想选择两个矩形区域,以便每位园丁负责其中一个区域内的玫瑰。这两个区域应当是不相交的,且每个区域必须恰好包含 $k$ 朵玫瑰。
Byteman 想要建造围栏将这两个矩形区域围起来,但他资金紧张,因此他希望使用尽可能少的围栏。你的任务是帮助 Byteman 选择这两个矩形区域。
花园是一个长 $l$ 米、宽 $w$ 米的矩形。它被划分为 $l \cdot w$ 个大小为 $1\text{ 米} \times 1\text{ 米}$ 的正方形。我们建立一个坐标系,其坐标轴与花园的边界平行。所有正方形的整数坐标 $(x,y)$ 满足 $1 \le x \le l$ 且 $1 \le y \le w$。每个正方形内可以有任意数量的玫瑰。
所选择的矩形区域的边必须与花园的边界平行,且其顶角的正方形必须具有整数坐标。对于 $1 \le l_1 \le l_2 \le l$ 且 $1 \le w_1 \le w_2 \le w$,一个以 $(l_1,w_1)$、$(l_1,w_2)$、$(l_2,w_1)$ 和 $(l_2,w_2)$ 为顶角的矩形区域:
- 包含所有满足 $l_1 \le x \le l_2$ 且 $w_1 \le y \le w_2$ 的坐标为 $(x,y)$ 的正方形,并且
- 其周长为 $2 \cdot (l_2 - l_1 + 1) + 2 \cdot (w_2 - w_1 + 1)$。
这两个矩形区域必须是不相交的,即它们不能包含共同的正方形。即使它们有公共边或公共边的一部分,它们也必须用各自独立的围栏围起来。
编写一个程序,满足以下要求:
- 从标准输入读取花园的尺寸、花园中玫瑰的数量、每个矩形区域中应包含的玫瑰数量以及玫瑰的位置;
- 寻找满足给定条件且周长之和最小的两个矩形区域的顶角;
- 向标准输出写入两个不相交矩形区域的最小周长之和,每个区域恰好包含给定数量的玫瑰(如果不存在这样的一对区域,则输出单个单词
NO)。
输入格式
第一行包含两个整数:$l$ 和 $w$($1 \le l, w \le 250$),由一个空格隔开,分别表示花园的长度和宽度。
第二行包含两个整数:$n$ 和 $k$($2 \le n \le 5000$,$1 \le k \le n/2$),由一个空格隔开,分别表示花园中玫瑰的总数以及每个矩形区域内应包含的玫瑰数量。
接下来的 $n$ 行包含玫瑰的坐标,每行一朵玫瑰。第 $(i+2)$ 行包含两个整数 $l_i$ 和 $w_i$($1 \le l_i \le l$,$1 \le w_i \le w$),由一个空格隔开,表示第 $i$ 朵玫瑰所在正方形的坐标。同一个正方形内可以有两朵或更多朵玫瑰。
在 50% 的测试数据中,花园的尺寸满足 $l, w \le 40$。
输出格式
输出仅包含一行,其中只有一个整数——满足条件的两个不相交矩形区域的最小周长之和(每个区域恰好包含 $k$ 朵玫瑰)。如果不存在这样的一对区域,则输出单个单词 NO。
样例
输入样例 1
6 5 7 3 3 4 3 3 6 1 1 1 5 5 5 5 3 1
输出样例 1
22