#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include // #include #include // #include #include using namespace atcoder; using namespace std; using ll = long long; using ull = unsigned long long; template using max_heap = priority_queue; template using min_heap = priority_queue, greater<>>; ll ll_min = numeric_limits::min(); ll ll_max = numeric_limits::max(); ll ALPHABET_N = 26; static const ll INF = ll_min / 10; // using mint = modint1000000007; #define rep(i, n) for (ll i = (ll)0; i < (ll)n; i++) #define rep_(i, k, n) for (ll i = (ll)k; i < (ll)n; i++) #define all(a) a.begin(), a.end() ll op(ll a, ll b) { return max(a, b); } ll e() { return ll_min; } int main() { ll q; cin >> q; ll r = 0; vector T(q), X(q); vector A; rep(i, q) { cin >> T[i] >> X[i]; if (T[i] == 1) { A.push_back(X[i]); } } segtree seg(A); rep(i, q) { if (T[i] == 1) { r++; } else { ll k = X[i]; ll l = r - k; cout << seg.prod(l, r) << endl; } } return 0; }