E. Критическая уязвимость
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

В $$$n$$$ кластерах расположены сервера, на каждом из которых установлена одна и та же операционная система. В её ядре была найдена уязвимость, поэтому сервера нужно обновить на исправленную версию ядра. В $$$i$$$-м кластере расположено $$$x_i$$$ серверов. Обновление одного сервера занимает одну единицу времени. Сервера обновляются строго последовательно, поэтому их суммарное время обновления занимает $$$x_i$$$ единиц времени. Начатый процесс обновления в одном кластере нельзя прерывать до того, как все сервера в нём будут обновлены. Также нельзя выполнять обновление в двух кластерах одновременно. В каждом кластере под обновление было выделено окно времени $$$[a_i, a_i + x_i]$$$, эти окна могут пересекаться. Необходимо выбрать кластера, в которых провести обновление, чтобы на максимальном количестве серверов была установлена новая версия ядра.

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

В первой строке дано число кластеров $$$n \ (1 \leq n\leq 10^5)$$$. В каждой из $$$n$$$ следующих строк дана пара чисел $$$a_i$$$ и $$$x_i$$$, разделённая пробелом $$$(1 \leq a_i, x_i \leq 10^9)$$$.

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

В первой строке выходного файла нужно вывести максимальное суммарное количество серверов, на которых возможно обновить ядро. Во второй строке выходного файла нужно вывести разделённые пробелом номера кластеров, в которых следует обновить ядро. Кластера нумеруются с нуля. Их номера можно вывести в произвольном порядке.

Примеры
Входные данные
4
1 4
4 11
8 5
12 5
Выходные данные
11
1 
Входные данные
4
1 4
4 11
8 3
12 5
Выходные данные
12
3 2 0 
Входные данные
2
1 1
2 1
Выходные данные
2
1 0