Если вы используете C++, пожалуйста, выберите в качестве компилятора при отправке решения: C++14 (GCC 6-32) или C++17 (GCC 7-32). ×

E. Прямоугольник
ограничение по времени на тест
0.5 секунд
ограничение по памяти на тест
64 мегабайта
ввод
стандартный ввод
вывод
стандартный вывод

Разрабатывая инструменты для создания карт локаций для пошаговых боёв в новой игре, Петя столкнулся со следующей задачей.

Карта поля состоит из шестиугольных сот. Так как локации планируются очень большие, гейм-дизайнер хочет иметь инструмент для быстрого заполнения участка поля одинаковыми вражескими юнитами. Выглядеть это будет следующим образом: гейм-дизайнер будет выделять на карте прямоугольную область, и на каждой соте, центр которой попадает в выделенный прямоугольник, должен появиться выбранный вражеский юнит.

Более формально, если гейм-дизайнер выбрал соты с координатами (x1, y1) и (x2, y2), где x1 ≤ x2 и y1 ≤ y2, то заполняются все соты с координатами центров (x, y), такие что x1 ≤ x ≤ x2 и y1 ≤ y ≤ y2. Прямоугольная система координат введена таким образом, что одна из сторон сот параллельна оси OX, все центры шестиугольников имеют целочисленные координаты, для каждого целого x есть соты с центром с такой x-координатой и для каждого целого y есть соты с центром с такой y-координатой. Гарантируется, что разность x2 - x1 делится нацело на 2.

В процессе выполнения задачи Петя решил, что прежде чем отрисовать указанных юнитов, он хочет выводить на экран пользователя количество юнитов, которые в итоге будут отрисованы на карте.

Помогите ему реализовать подсчёт этих юнитов до отрисовки.

Входные данные

Единственная строка входных данных содержит четыре целых числа x1, y1, x2, y2 ( - 109 ≤ x1 ≤ x2 ≤ 109,  - 109 ≤ y1 ≤ y2 ≤ 109) — координаты центров двух сот.

Выходные данные

Выведите одно целое число — количество сот, подлежащих заполнению.

Примеры
Входные данные
1 1 5 5
Выходные данные
13