#include #include using namespace std; using namespace atcoder; using ll = long long; using vi = vector; using vvi = vector; using vl = vector; using vvl = vector; using vs = vector; using vp = vector>; #define rep(i, s, n) for (int i = s; i < (int)(n); i++) #define sz(x) ((int)(x).size()) constexpr int INFI = 1001001001; constexpr ll INFL = (1LL << 60); int main (){ ios::sync_with_stdio(false); cin.tie(nullptr); // input ll n, k, q; cin >> n >> k >> q; priority_queue pqk; priority_queue, greater> pqs; rep(i, 0, n){ ll a; cin >> a; pqs.push(a); } rep (i, 0, k - 1){ ll a = pqs.top(); pqs.pop(); pqk.push(a); } rep (i, 0, q){ int x; cin >> x; if(x == 1){ ll y; cin >> y; if(y >= pqk.top()) pqs.push(y); else{ ll a = pqk.top(); pqk.pop(); pqk.push(y); pqs.push(a); } } else if(x == 2){ ll y; cin >> y; ll z = pqs.top(); pqs.pop(); pqs.push(y + z); } else cout << pqs.top() << endl; } return 0; }