#include <iostream>
#include <deque>

int main()
{
	int q;
	std::deque<int> di;
	std::cin >> q;
	while (q--) {
		int a;
		std::cin >> a;
		if (a == 0) {
			int d, x;
			std::cin >> d >> x;
			if (d == 0) {
				di.push_front(x);
			} else {
				di.push_back(x);
			}
		} else if (a == 1) {
			int p;
			std::cin >> p;
			std::cout << di[p] << std::endl;
		} else {
			int d;
			std::cin >> d;
			if (d == 0) {
				di.pop_front();
			} else {
				di.pop_back();
			}
		}
	}

	return 0;
}
