Олимпиадный тренинг

Задача . C. Поликарп восстанавливает перестановку


Задача

Темы: математика *1500

Массив целых чисел \(p_1, p_2, \dots, p_n\) называется перестановкой, если он содержит каждое число от \(1\) до \(n\) ровно один раз. Например, следующие массивы являются перестановками: \([3, 1, 2]\), \([1]\), \([1, 2, 3, 4, 5]\) и \([4, 3, 1, 2]\). Следующие массивы перестановками не являются: \([2]\), \([1, 1]\), \([2, 3, 4]\).

Поликарп изобрел невероятно крутую перестановку \(p_1, p_2, \dots, p_n\) длины \(n\). К сожалению, он забыл эту перестановку. Единственное, что он помнит, это массив \(q_1, q_2, \dots, q_{n-1}\) длины \(n-1\), где \(q_i=p_{i+1}-p_i\).

Заданы \(n\) и \(q=q_1, q_2, \dots, q_{n-1}\), помогите Поликарпу по этой информации восстановить придуманную им перестановку.

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

Первая строка содержит целое число \(n\) (\(2 \le n \le 2\cdot10^5\)) — длину перестановки, которую надо восстановить. Следующая строка содержит \(n-1\) целое число \(q_1, q_2, \dots, q_{n-1}\) (\(-n < q_i < n\)).

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

Выведите -1, если перестановки длины \(n\), которая соответствует массиву \(q\), не существует. В противном случае выведите \(p_1, p_2, \dots, p_n\). Если существует несколько подходящих перестановок, то выведите любую из них.


Примеры
Входные данныеВыходные данные
1 3
-2 1
3 1 2
2 5
1 1 1 1
1 2 3 4 5
3 4
-1 2 2
-1

time 2000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя