#include <iostream>
#include <bits/stdc++.h>
#include <string>
using namespace std;
class Node {
public:
int value;
Node* next;
Node(int a) {
value = a;
next = nullptr;
}
};
class ForwardList {
public:
Node* head;
Node* tail; // последний элемент
ForwardList() {
head = nullptr;
tail = nullptr;
}
~ForwardList() {
while (head != nullptr) pop_front();
}
void pop_front() {
if (head == NULL) return;
if (head == tail) {
delete head;
head = tail = nullptr;
return;
}
Node* for_delete = head;
head = for_delete->next;
delete for_delete;
}
Node* get_at(int x) {
if (x < 0) {return nullptr;}
int n = 0;
Node* pointer = head;
while (n < x && pointer->next)
{
pointer = pointer->next;
n++;
}
return (n == x) ? pointer : nullptr;
}
void push_at(int x, int y) {
Node* previous = get_at(x);
Node* current = get_at(x + 1);
Node* new_node = new Node(y);
if (previous) {
previous->next = new_node;
if (current) {new_node->next = current;}
}
if (head == nullptr) {head = tail = new_node;}
if (tail == nullptr) {tail = new_node;}
}
void pop_at(int x) {
Node* previous = get_at(x - 1);
Node* current = get_at(x);
if (previous) {previous->next = current->next;}
if (current) {
if (head == current) {head == nullptr;}
if (tail == current) {tail == nullptr;}
delete current;
}
}
};
void execute_query(ForwardList& list, int type, int x, int y) {
if (type == 1) {
list.push_at(x, y);
} else if (type == 2) {
cout << list.get_at(x) << "\n";
} else {
list.pop_at(x);
}
}
int main() {
cin.tie(0);
ios::sync_with_stdio(false);
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
ForwardList FL;
int q;
cin >> q;
for (int i = 0; i < q; i++)
{
string query;
getline(cin, query);
int type = (int) (query[0] - '0');
execute_query(
FL,
type,
(int) (query[2] - '0'),
(type == 1) ? ((int) (query[4] - '0')) : (0)
);
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KI2luY2x1ZGUgPHN0cmluZz4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCgpjbGFzcyBOb2RlIHsKCXB1YmxpYzoKICAgICAgICBpbnQgdmFsdWU7CiAgICAgICAgTm9kZSogbmV4dDsKCiAgICAgICAgTm9kZShpbnQgYSkgewogICAgICAgIAl2YWx1ZSA9IGE7CiAgICAgICAgICAgIG5leHQgPSBudWxscHRyOwogICAgICAgIH0KfTsKCgpjbGFzcyBGb3J3YXJkTGlzdCB7CglwdWJsaWM6CgkJTm9kZSogaGVhZDsKCQlOb2RlKiB0YWlsOyAvLyDQv9C+0YHQu9C10LTQvdC40Lkg0Y3Qu9C10LzQtdC90YIKCQkKCQlGb3J3YXJkTGlzdCgpIHsKCQkJaGVhZCA9IG51bGxwdHI7CgkJCXRhaWwgPSBudWxscHRyOwoJCX0KCQkKCQl+Rm9yd2FyZExpc3QoKSB7CgkJCXdoaWxlIChoZWFkICE9IG51bGxwdHIpIHBvcF9mcm9udCgpOwoJCX0KCgkJdm9pZCBwb3BfZnJvbnQoKSB7CgkJCWlmIChoZWFkID09IE5VTEwpIHJldHVybjsKCgkJCWlmIChoZWFkID09IHRhaWwpIHsKCQkJCWRlbGV0ZSBoZWFkOwoJCQkJaGVhZCA9IHRhaWwgPSBudWxscHRyOwoKCQkJCXJldHVybjsKCQkJfQoKCQkJTm9kZSogZm9yX2RlbGV0ZSA9IGhlYWQ7CgkJCWhlYWQgPSBmb3JfZGVsZXRlLT5uZXh0OwoJCQlkZWxldGUgZm9yX2RlbGV0ZTsKCQl9CgoJCU5vZGUqIGdldF9hdChpbnQgeCkgewoJCQlpZiAoeCA8IDApIHtyZXR1cm4gbnVsbHB0cjt9CgoJCQlpbnQgbiA9IDA7CgkJCU5vZGUqIHBvaW50ZXIgPSBoZWFkOwoKCQkJd2hpbGUgKG4gPCB4ICYmIHBvaW50ZXItPm5leHQpCgkJCXsKCQkJCXBvaW50ZXIgPSBwb2ludGVyLT5uZXh0OwoJCQkJbisrOwoJCQl9CgkJCQoJCQlyZXR1cm4gKG4gPT0geCkgPyBwb2ludGVyIDogbnVsbHB0cjsKCQl9CgoJCXZvaWQgcHVzaF9hdChpbnQgeCwgaW50IHkpIHsKCQkJTm9kZSogcHJldmlvdXMgPSBnZXRfYXQoeCk7CgkJCU5vZGUqIGN1cnJlbnQgPSBnZXRfYXQoeCArIDEpOwoJCQkKCQkJTm9kZSogbmV3X25vZGUgPSBuZXcgTm9kZSh5KTsKCgkJCWlmIChwcmV2aW91cykgewoJCQkJcHJldmlvdXMtPm5leHQgPSBuZXdfbm9kZTsKCgkJCQlpZiAoY3VycmVudCkge25ld19ub2RlLT5uZXh0ID0gY3VycmVudDt9CgkJCX0gCgkJCQoKCQkJaWYgKGhlYWQgPT0gbnVsbHB0cikge2hlYWQgPSB0YWlsID0gbmV3X25vZGU7fQoJCQlpZiAodGFpbCA9PSBudWxscHRyKSB7dGFpbCA9IG5ld19ub2RlO30KCQl9CgkJCgkJdm9pZCBwb3BfYXQoaW50IHgpIHsKCQkJTm9kZSogcHJldmlvdXMgPSBnZXRfYXQoeCAtIDEpOwoJCQlOb2RlKiBjdXJyZW50ID0gZ2V0X2F0KHgpOwoKCQkJaWYgKHByZXZpb3VzKSB7cHJldmlvdXMtPm5leHQgPSBjdXJyZW50LT5uZXh0O30KCgkJCWlmIChjdXJyZW50KSB7CgkJCQlpZiAoaGVhZCA9PSBjdXJyZW50KSB7aGVhZCA9PSBudWxscHRyO30KCQkJCWlmICh0YWlsID09IGN1cnJlbnQpIHt0YWlsID09IG51bGxwdHI7fQoJCQkJZGVsZXRlIGN1cnJlbnQ7CgkJCQkKCQkJfQoJCX0KCgkJCn07CgoKdm9pZCBleGVjdXRlX3F1ZXJ5KEZvcndhcmRMaXN0JiBsaXN0LCBpbnQgdHlwZSwgaW50IHgsIGludCB5KSB7CglpZiAodHlwZSA9PSAxKSB7CgkJbGlzdC5wdXNoX2F0KHgsIHkpOwoJfSBlbHNlIGlmICh0eXBlID09IDIpIHsKCQljb3V0IDw8IGxpc3QuZ2V0X2F0KHgpIDw8ICJcbiI7Cgl9IGVsc2UgewoJCWxpc3QucG9wX2F0KHgpOwoJfQp9CgppbnQgbWFpbigpIHsKCWNpbi50aWUoMCk7Cglpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CgoJZnJlb3BlbigiaW5wdXQudHh0IiwgInIiLCBzdGRpbik7CglmcmVvcGVuKCJvdXRwdXQudHh0IiwgInciLCBzdGRvdXQpOwoKCUZvcndhcmRMaXN0IEZMOwoKCWludCBxOwoJY2luID4+IHE7CgkKCglmb3IgKGludCBpID0gMDsgaSA8IHE7IGkrKykgCgl7CgkJc3RyaW5nIHF1ZXJ5OwoJCWdldGxpbmUoY2luLCBxdWVyeSk7CgoKCQlpbnQgdHlwZSA9IChpbnQpIChxdWVyeVswXSAtICcwJyk7CgkJZXhlY3V0ZV9xdWVyeSgKCQkJRkwsCgkJCXR5cGUsCgkJCShpbnQpIChxdWVyeVsyXSAtICcwJyksCgkJCSh0eXBlID09IDEpID8gKChpbnQpIChxdWVyeVs0XSAtICcwJykpIDogKDApCgkJKTsKCX0KCglyZXR1cm4gMDsKfQ==