CF1531E3 Сортировка слиянием

Description

Рассмотрим следующий код сортировки слиянием на языке Python: ```
```
def sort(a):

n = len(a)

b = [0 for i in range(n)]

log = []



def mergeSort(l, r):

if r - l > 1

mergeSort(l, m)

mergeSort(m, r)

i, j, k = l, m, l

while i < m and j < r:

if a[i] < a[j]:

log.append('0')

b[k] = a[i]

i += 1

else:

log.append('1')

b[k] = a[j]

j += 1

k += 1

while i < m:

b[k] = a[i]

i += 1

k += 1

while j < r:

b[k] = a[j]

j += 1

k += 1

for p in range(l, r):

a[p] = b[p]



mergeSort(0, n)

return "".join(log)

``` ``` Как можно заметить, этот код использует логирование — важнейший инструмент разработки. Старший разработчик ВКонтакте Вася сгенерировал перестановку $ a $ (массив из $ n $ различных целых чисел от $ 1 $ до $ n $ ), дал её на вход функции sort и получил на выходе строку $ s $ . На следующий день строку $ s $ Вася нашёл, а перестановка $ a $ потерялась. Вася хочет восстановить любую перестановку $ a $ такую, что вызов функции sort от неё даст ту же строку $ s $ . Помогите ему!

Input Format

Ввод содержит непустую строку $ s $ , состоящую из символов 0 и 1. В этой версии задачи для любого теста существует перестановка длины не более $ 10^5 $ , удовлетворяющая условию. Тем не менее, ваш ответ может иметь любую длину, в том числе превышающую $ 10^5 $ .

Output Format

В первой строке выведите целое число $ n $ — длину перестановки. Во второй строке выведите $ n $ различных целых чисел $ a_0, a_1, \ldots, a_{n-1} $ ( $ 1 \le a_i \le n $ ) — элементы перестановки. Если существует несколько вариантов ответа, выведите любой из них.