import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Deque;
import java.util.LinkedList;
public class Main {
int n
= Integer.
parseInt(br.
readLine()); int[] move = new int[n + 1]; // 풍선 번호 별로 적혀있는 숫자
// 풍선 저장
Deque<Integer> que = new LinkedList<>(); // 풍선의 인덱스 저장, 1 ~ N
String[] inputs
= br.
readLine().
split(" "); for (int i = 0; i < n; i++) {
int val
= Integer.
parseInt(inputs
[i
]); move[i + 1] = val;
que.offer(i + 1);
}
// 가장 앞에 위치한 풍선을 하나씩 꺼내어,
// 풍선에 적혀있는 숫자(move)만큼 left 또는 right로 회전한다.
StringBuilder sb = new StringBuilder();
while (que.size() > 1) {
int idx = que.poll();
sb.append(idx).append(" ");
if (move[idx] > 0) {
iterator(que, true, move[idx] - 1);
} else {
iterator
(que,
false,
Math.
abs(move
[idx
])); }
}
sb.append(que.poll());
}
static void iterator(Deque<Integer> que, boolean isLeftIterator, int iteratorCount) {
// 왼쪽으로 회전
if (isLeftIterator) {
for (int i = 0; i < iteratorCount; i++) {
que.offer(que.poll());
}
} else { // 오른쪽으로 회전
for (int i = 0; i < iteratorCount; i++) {
que.offerFirst(que.pollLast());
}
}
}
}
aW1wb3J0IGphdmEuaW8uQnVmZmVyZWRSZWFkZXI7CmltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwppbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbVJlYWRlcjsKaW1wb3J0IGphdmEudXRpbC5EZXF1ZTsKaW1wb3J0IGphdmEudXRpbC5MaW5rZWRMaXN0OwoKcHVibGljIGNsYXNzIE1haW4gewogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIElPRXhjZXB0aW9uIHsKICAgICAgICBCdWZmZXJlZFJlYWRlciBiciA9IG5ldyBCdWZmZXJlZFJlYWRlcihuZXcgSW5wdXRTdHJlYW1SZWFkZXIoU3lzdGVtLmluKSk7CiAgICAgICAgCiAgICAgICAgaW50IG4gPSBJbnRlZ2VyLnBhcnNlSW50KGJyLnJlYWRMaW5lKCkpOwogICAgICAgIGludFtdIG1vdmUgPSBuZXcgaW50W24gKyAxXTsgLy8g7ZKN7ISgIOuyiO2YuCDrs4TroZwg7KCB7ZiA7J6I64qUIOyIq+yekAoKICAgICAgICAvLyDtko3shKAg7KCA7J6lCiAgICAgICAgRGVxdWU8SW50ZWdlcj4gcXVlID0gbmV3IExpbmtlZExpc3Q8PigpOyAvLyDtko3shKDsnZgg7J24642x7IqkIOyggOyepSwgMSB+IE4KICAgICAgICBTdHJpbmdbXSBpbnB1dHMgPSBici5yZWFkTGluZSgpLnNwbGl0KCIgIik7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgaW50IHZhbCA9IEludGVnZXIucGFyc2VJbnQoaW5wdXRzW2ldKTsKICAgICAgICAgICAgbW92ZVtpICsgMV0gPSB2YWw7CiAgICAgICAgICAgIHF1ZS5vZmZlcihpICsgMSk7CiAgICAgICAgfQoKICAgICAgICAvLyDqsIDsnqUg7JWe7JeQIOychOy5mO2VnCDtko3shKDsnYQg7ZWY64KY7JSpIOq6vOuCtOyWtCwKICAgICAgICAvLyDtko3shKDsl5Ag7KCB7ZiA7J6I64qUIOyIq+yekChtb3ZlKeunjO2BvCBsZWZ0IOuYkOuKlCByaWdodOuhnCDtmozsoITtlZzri6QuCiAgICAgICAgU3RyaW5nQnVpbGRlciBzYiA9IG5ldyBTdHJpbmdCdWlsZGVyKCk7CiAgICAgICAgd2hpbGUgKHF1ZS5zaXplKCkgPiAxKSB7CiAgICAgICAgICAgIGludCBpZHggPSBxdWUucG9sbCgpOwogICAgICAgICAgICBzYi5hcHBlbmQoaWR4KS5hcHBlbmQoIiAiKTsKCiAgICAgICAgICAgIGlmIChtb3ZlW2lkeF0gPiAwKSB7CiAgICAgICAgICAgICAgICBpdGVyYXRvcihxdWUsIHRydWUsIG1vdmVbaWR4XSAtIDEpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaXRlcmF0b3IocXVlLCBmYWxzZSwgTWF0aC5hYnMobW92ZVtpZHhdKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHNiLmFwcGVuZChxdWUucG9sbCgpKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oc2IpOwogICAgfQoKICAgIHN0YXRpYyB2b2lkIGl0ZXJhdG9yKERlcXVlPEludGVnZXI+IHF1ZSwgYm9vbGVhbiBpc0xlZnRJdGVyYXRvciwgaW50IGl0ZXJhdG9yQ291bnQpIHsKICAgICAgICAvLyDsmbzsqr3snLzroZwg7ZqM7KCECiAgICAgICAgaWYgKGlzTGVmdEl0ZXJhdG9yKSB7CiAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaXRlcmF0b3JDb3VudDsgaSsrKSB7CiAgICAgICAgICAgICAgICBxdWUub2ZmZXIocXVlLnBvbGwoKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgeyAvLyDsmKTrpbjsqr3snLzroZwg7ZqM7KCECiAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaXRlcmF0b3JDb3VudDsgaSsrKSB7CiAgICAgICAgICAgICAgICBxdWUub2ZmZXJGaXJzdChxdWUucG9sbExhc3QoKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0=