import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
/**
* @描述:用一个栈实现另一个栈的排序
* @思路:
* @复杂度: 最好时间复杂度O(N) 最差平均复杂度O(N^2)
* @链接:https://www.nowcoder.com/practice/ff8cba64e7894c5582deafa54cca8ff2?tpId=101&tqId=33081&tPage=1&rp=1&ru=/ta/programmer-code-interview-guide&qru=/ta/programmer-code-interview-guide/question-ranking
*/
class SortStackByStack {
/**
* @param stack 无序的栈
* @return 有序的栈(从栈顶到栈底,由大到小排序)
*/
public static Stack<Integer> stackSort(Stack<Integer> stack) {
Stack<Integer> help = new Stack<>();
while (!stack.isEmpty()) {
Integer curr = stack.pop();
while (!help.isEmpty() && help.peek() > curr) {
stack.push(help.pop());
}
help.push(curr);
}
return help;
}
public static void main(String[] args) {
Stack<Integer> stack = new Stack<>();
stack.push(1);
stack.push(3);
stack.push(4);
stack.push(2);
Stack<Integer> result = SortStackByStack.stackSort(stack);
while (!result.isEmpty()) {
System.out.println(result.pop());
}
}
}
class Main {
public static void main(String[] args) throws IOException {
Stack<Integer> stack = new Stack<>();
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
int row = Integer.parseInt(in.readLine());
String[] item = in.readLine().split(" ");
for (int i = 0; i < row; i++) {
stack.push(Integer.parseInt(item[i]));
}
stack = SortStackByStack.stackSort(stack);
StringBuilder sb = new StringBuilder();
while (!stack.empty()) {
sb.append(stack.pop()).append(" ");
}
System.out.println(sb.substring(0, sb.length() - 1));
}
}