У Алисы сегодня день рождения, и она хочет угостить своих одноклассников конфетами. В магазине, в который она успеет зайти перед школой, есть сладости двух видов: шоколадные и карамельные. Они продаются наборами по 3
штуки, причём в упаковке есть конфеты каждого из двух видов (то есть в одной упаковке лежат две конфеты одного вида и одна конфета другого вида). По внешнему виду упаковки нельзя понять, какие конфеты лежат внутри.
Чтобы никого не обидеть, всем в классе нужно раздать конфеты одного вида, а оставшиеся девочка заберёт домой. Алисе нужно собираться в школу, поэтому она попросила вас посчитать, какое минимальное число упаковок нужно купить, чтобы конфет хватило на всех.
Формат входных данных
В единственной строке задано число n
(1≤n≤109
) —
количество человек в классе.
Формат выходных данных
Выведите единственное число —
количество упаковок, которое должна купить Алиса.
Система оценки
Решения, правильно работающие при n≤103
, будут оцениваться в 25
баллов. Решения, правильно работающие при n≤106
, будут оцениваться в 50
баллов.
Замечание
В первом примере Алиса купит две упаковки с конфетами. В первой упаковке лежат 2
конфеты одного вида и 1
конфета другого вида. Если вторая упаковка будет такая же, как и первая, то у Алисы окажется 4
конфеты одного вида и 2
конфеты другого вида. Если вторая упаковка будет отличаться от первой, то у Алисы будет по 3
конфеты каждого вида. В любом случае у Алисы найдётся 3
конфеты одного вида.
Как видно из первого примера, для того, чтобы гарантированно получить 4
конфеты одного вида, недостаточно купить две упаковки.
n = int(input())
l = 0
r = n + 1
while True:
m = (l + r) // 2
candies = m // 2 * 3 + (m % 2) * 2
l, r = (m, r) if candies < n else (l, m)
if abs(r - l)