普及-⏱ 1000ms💾 256MB#P3074

题目描述

$1,2,\ldots,n$ 依次入栈,入栈过程中可以在任意时刻出栈。给定一个出栈序列,判断它是否可能;若可能,输出一组对应的操作序列(push 使下一个数入栈、pop 使栈顶出栈)。

输入格式

第一行整数 $n$;第二行 $n$ 个互不相同且取值在 $[1,n]$ 的整数,为出栈序列。

输出格式

不可能输出 impossible;否则输出若干行操作,按发生顺序每行一个 pushpop(若有多种方案输出字典序最小的一种:能 pop 就先 pop)。

数据范围

$$1 \le n \le 2000$$

样例输入 #1
1
1
样例输出 #1
push
pop
样例输入 #2
2
2 1
样例输出 #2
push
push
pop
pop