Є сітка розміру W \times H, оточена стінами. Деякі клітинки в сітці зайняті слизнями. Слизні прагнуть об'єднатися і стати "Королем Слизнів".
За кожен хід слизень може рухатися на схід, захід, південь або північ, поки не досягне клітинки, зайнятої іншим слизнем, або не натрапить на стіну. Якщо два слизні зустрічаються, вони об'єднуються в одного нового слизня.
Ваше завдання — написати програму, яка визначить мінімальну кількість ходів, необхідну для об'єднання всіх слизнів у Короля Слизнів. Припускається, що слизні рухаються по черзі і ніколи не рухаються одночасно.
Перша строка містить три цілі числа (2 \leq N \leq 40000), і (1 \leq W, H \leq 100000), які позначають кількість слизнів, ширину і висоту сітки відповідно.
Наступні рядків описують початкові координати слизнів. -й рядок містить два цілі числа x_i (1 \leq x_i \leq W) і y_i (1 \leq y_i \leq H), які вказують координати -го слизня. Всі координати є -базованими.
Ви можете припустити, що кожна клітинка спочатку зайнята не більше ніж одним слизнем.
Виведіть мінімальну кількість ходів, щоб усі слизні об'єдналися і стали Королем Слизнів.
Приклад 1