"""
Пусть в коробке лежит двадцать один диск, среди которых
пятнадцать окрашены в синий цвет и остальные шесть - в красный.
Из коробки случайным образом взяли два диска. Нетрудно
показать, что вероятность достать два синих диска равна
P(BB) = (15/21)×(14/20) = 1/2.

Следующая комбинация из наименьшего возможного количества
дисков с ровно 50%-ным шансом случайным образом достать
2 синих диска - это коробка с 85 синими дисками и 35 красными.

Найдите такую комбинацию с наименьшим возможным суммарным
количеством дисков, превышающим 10^12 = 1 000 000 000 000,
и определите количество синих дисков, находящихся в коробке.
"""
from decimal import Decimal as dec
from math import ceil, floor

res = None
key, x = 6, 15
step = x / 2
while res is None:
    y = x + key
    x_side, y_side = dec(x * (x - 1) * 2), dec(y * (y - 1))

    if x_side == y_side:
        if y > 10 ** 12:
            res = x, int(y)
        else:
            key = dec(x * (x - 1) / key)
            step = ceil(x / 2)

    elif x_side > y_side and step > 0:
        step = ceil(step / 2) * -1

    elif x_side < y_side and step < 0:
        step = floor(step / 2) * -1

    x += step

print(res)