#include #include using namespace std; using namespace atcoder; using mint = modint998244353; //using mint = modint1000000007; typedef long long ll; typedef pair P; typedef tuple T; templatebool chmax(T& a, const T& b) { if (a < b) { a = b;return true; } else { return false; } } templatebool chmin(T& a, const T& b) { if (a > b) { a = b;return true; } else { return false; } } template void dbg(Args&&... args) { ((cout << args << ' '), ...);cout << '\n'; } const int di[] = { -1,0,1,0 }; const int dj[] = { 0,-1,0,1 }; const long long INF = 6000000000000000000; const int inf = 1001001001; int main(void) { ios::sync_with_stdio(false); cin.tie(nullptr); int n, k, q; cin >> n >> k >> q; priority_queue pqs; priority_queue, greater> pqb; vector a(n, 0); for (int i = 0; i < n; i++) { cin >> a[i]; } sort(a.begin(), a.end()); for (int i = 0; i < n; i++) { if (i < k)pqs.emplace(a[i]); else pqb.emplace(a[i]); } pqb.emplace(INF); while (q--) { int r; cin >> r; if (r == 1) { ll x; cin >> x; ll v = pqs.top(); if (v <= x)pqb.emplace(x); else { pqb.emplace(v);pqs.pop(); pqs.emplace(x); } } else if (r == 2) { ll x; cin >> x; ll u = pqs.top();pqs.pop(); x += u; ll v = pqb.top(); if (v >= x)pqs.emplace(x); else { pqs.emplace(v);pqb.pop(); pqb.emplace(x); } } else { cout << pqs.top() << "\n"; } } }