스택은 마지막에 넣은 값이 가장 먼저 나오는 LIFO(Last In, First Out) 자료구조이다. 값은 스택에 넣는 push 연산과 스택에서 빼는 pop 연산으로 다룬다.
1부터 n까지의 수를 반드시 오름차순으로만 push할 수 있다고 하자. push와 pop을 적절히 수행하면 하나의 수열을 만들 수 있다. 주어진 수열을 스택으로 만들 수 있는지 판단하고, 가능하다면 필요한 연산 순서를 출력하는 프로그램을 작성하라.
첫째 줄에 정수 n이 주어진다. (1 <= n <= 100,000)
둘째 줄부터 n개의 줄에는 만들고 싶은 수열의 원소가 순서대로 하나씩 주어진다. 각 원소는 1 이상 n 이하의 정수이며, 같은 정수는 두 번 나오지 않는다.
주어진 수열을 만들 수 있다면 필요한 연산을 한 줄에 하나씩 출력한다. push 연산은 +, pop 연산은 -로 출력한다.
수열을 만들 수 없다면 NO를 출력한다.
1부터 8까지의 수에 대해 push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop 순서로 연산하면 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다.