У селі Софтвіль існує традиційний спосіб розробки програмного забезпечення: у перший день програміст пише кілька рядків коду (принаймні один рядок), а кожного наступного дня додає ще один рядок до попередньої кількості.
Коли житель Софтвіля досягає років, він повинен пройти ініціацію, створивши з нуля складну програму. Ця програма має однаковий код для всіх і складається з рівно рядків. Кожному жителю потрібна різна кількість днів, щоб завершити цю програму. Проте правило залишається незмінним: щодня програміст пише на один рядок більше, ніж попереднього дня.
Вам надано інформацію про те, скільки днів знадобилося кожному жителю для написання своєї програми. Ваше завдання — визначити найменше можливе значення , тобто кількість рядків у програмі.
Перша строка вхідного файлу містить число (1 \le m \le 1000) — кількість жителів Софтвіля. Друга строка містить чисел, які вказують на кількість днів, протягом яких кожен житель працював над своєю програмою. Усі числа в другій строці є додатними цілими числами, меншими за 2^{63}.
Вихід повинен містити єдине число — найменше можливе значення для . Якщо вхідні дані не можуть бути узгоджені для жодного значення , ви повинні вивести . Інакше гарантовано, що найменше можливе значення для менше за 2^{63}.
Приклад 1