import sys
from bisect import bisect_right
def solve():
# Открываем файл с данными (убедись, что он лежит рядом со скриптом)
try:
with open('26.txt', 'r') as f:
lines = f.readlines()
except FileNotFoundError:
print("Файл 26.txt не найден!")
return
if not lines:
return
# Считываем количество коробок
N = int(lines[0].strip())
boxes = []
# Считываем данные о коробках (размер и материал)
for i in range(1, N + 1):
size, color = map(int, lines[i].split())
boxes.append((size, color))
# Сортируем коробки по размеру по возрастанию
boxes.sort(key=lambda x: x[0])
# Массивы для хранения минимального размера последней (самой большой) коробки
# для последовательности заданной длины.
# Индекс в массиве = длина собранной "матрёшки".
# m0 - для матрёшек, где самая внешняя коробка материала 0
# m1 - для матрёшек, где самая внешняя коробка материала 1
m0 = [0]
m1 = [0]
# Проходим по всем отсортированным коробкам
for size, color in boxes:
if color == 0:
# Ищем самую длинную матрёшку с внешней коробкой цвета 1,
# размер которой <= size - 3 (то есть наша текущая коробка налезет на неё)
idx = bisect_right(m1, size - 3) - 1
if idx >= 0:
new_len = idx + 1 # Длина новой матрёшки
# Так как мы идем по возрастанию размеров, первая найденная матрёшка
# новой длины гарантированно будет иметь минимально возможный размер
if new_len == len(m0):
m0.append(size)
else: # color == 1
# Делаем то же самое, но ищем в массиве цвета 0
idx = bisect_right(m0, size - 3) - 1
if idx >= 0:
new_len = idx + 1
if new_len == len(m1):
m1.append(size)
# Максимальные длины матрёшек для каждого из цветов
max_len_0 = len(m0) - 1
max_len_1 = len(m1) - 1
# Общая максимальная длина
max_len = max(max_len_0, max_len_1)
# Ищем минимальный размер самой большой коробки среди матрёшек максимальной длины
min_largest = float('inf')
if max_len_0 == max_len:
min_largest = min(min_largest, m0[max_len])
if max_len_1 == max_len:
min_largest = min(min_largest, m1[max_len])
# Выводим ответ: максимальное количество коробок и минимальный размер самой большой
print(f"Ответ: {max_len} {min_largest}")
if __name__ == '__main__':
solve()