#include <iostream>
#include <deque>
int main()
{
// Q 回の操作
int Q;
std::cin >> Q;
// 山札(上から順に並んでいる)
std::deque<int> deck;
for (int i = 0; i < Q; ++i)
{
int t, x;
std::cin >> t >> x;
if (t == 1)
{
// 山札の一番上に追加
deck.push_front(x);
}
else if (t == 2)
{
// 山札の一番下に追加
deck.push_back(x);
}
else
{
std::cout << deck[x - 1] << '\n';
}
}
}