#include<bits/stdc++.h>
#include<vector>
using namespace std;

int main() {
    vector<int> a; // 维护的整数序列
    int q;
    cin >> q;
    for(int op_idx = 1; op_idx <= q; op_idx++) { // 变量名改为op_idx,避免和序列下标混淆
        int t;
        cin >> t;
        switch(t) {
            case 1: { // 加{}限定作用域,避免switch跳转问题
                int x;
                cin >> x;
                a.push_back(x); // 末尾添加元素
                break;
            }
            case 2:
                a.pop_back(); // 删除末尾元素
                break;
            case 3: {
                int i;
                cin >> i;
                cout << a[i] << endl; // 输出指定下标元素,加换行
                break; // 补充break,避免穿透
            }
            case 4: {
                int y,m;
                cin>>y>>m;
                a.push_back(0);
                int len=a.size();
                for(int j=len-1;j>y;j--){
                    a[j]=a[j-1];
                }
                a[y+1]=m;
                break;
            }
            case 5:  
                sort(a.begin(), a.end()); // 升序排序
                break;
            case 6:
                sort(a.begin(), a.end());
                reverse(a.begin(), a.end()); // 降序排序(先升序再反转)
                break;
            case 7:
                cout << a.size() << endl; // 输出长度,加换行
                break;
            case 8: {
                // 遍历序列,输出所有元素(空格分隔)
                for(int k = 0; k < a.size(); k++) { // 边界改为k < a.size()
                    if(k > 0) cout << " "; // 除第一个元素外,前面加空格
                    cout << a[k]; // 用k作为下标,而非op_idx
                }
                cout << endl; // 换行
                break;
            }
        }
    }
    return 0;
}