#include <cstddef>
#include <cstdio>
#include <iostream>
#include <vector>
#include <cstdlib>
#include <algorithm>
#include <functional>
using namespace std;
int main() {
int q;
cin >> q;
char **operate = (char **)malloc(sizeof(char *) * q);
if(operate == nullptr){
printf("Failed Malloc!\n");
return -1;
}
for(int i = 0; i < q; i ++){
operate[i] = (char *)malloc(sizeof(char) * 100);
if(operate[i] == nullptr){
printf("Failed Malloc!\n");
return -1;
}
}
vector<int> v;
int c;
while ((c = getchar()) != '\n' && c != EOF);
for(int j = 0; j < q; j ++){
fgets(operate[j], 100, stdin);
}
for(int i = 0; i < q; i ++){
if(operate[i][0] == '1'){
int temp = strtol(operate[i] + 2, nullptr, 10);
v.push_back(temp);
}
else if(operate[i][0] == '2'){
if(!v.empty()){
v.pop_back();
}
}
else if(operate[i][0] == '3'){
int temp = strtol(operate[i] + 2, nullptr, 10);
if(temp < v.size() && temp >= 0){
cout <<v[temp] << endl;
}
}
else if(operate[i][0] == '4'){
char *p = operate[i] + 2;//第一个数的开始位置
char *temp;
int i = strtol(p, &temp, 10);
if(p == temp){ //没有第一个数
continue;
}
while(*temp == ' ' || *temp == '\t') temp ++;//遇到制表符和空格就探寻下一位
if(*temp == '\0'){//第二个数不存在
continue;
}
int x = strtol(temp, nullptr, 10);//解析第二个数
if(i< v.size()){
v.insert(v.begin() + i + 1, x);
}
}
else if(operate[i][0] == '5'){
sort(v.begin(),v.end());
}
else if(operate[i][0] == '6'){
sort(v.begin(),v.end(),greater<>());
}
else if(operate[i][0] == '7'){
cout << v.size() << endl;
}
else if(operate[i][0] == '8'){
for (auto it = v.begin(); it != v.end(); ++it) {
cout << *it << ' ';
}
cout << endl;
}
else{
printf("Error!\n");
}
}
free(operate);
return 0;
}