#include <iostream>
#include <vector>
#include <algorithm>
#include <set>
using namespace std;

int main(){
    cin.tie(0); ios_base::sync_with_stdio(false);
    int Q; cin >> Q;
    
    // xは中央値
    // f(x)について
    // 2がくる度に最小値を計算すると間に合わないので、
    // 1がくる度に解を更新していく。

    // L : 区間の左側(一番後ろが中央値)
    // R : 区間の右側
    // 常にmax(L) <= min(R) && L.size()==R.size()となるように値を挿入
    multiset<long> L, R;
    long ans = 0;
    for(int i=0; i < Q; ++i) {
        int q, a, b;
        cin >> q;
        if(q == 1) {
            cin >> a >> b;
            L.insert(a), R.insert(a);
            ans += b;

            long x = *--L.end(), y = *R.begin();
            L.erase(--L.end()), R.erase(R.begin());
            if(x > y) { // L の最大値 > Rの最小値 -> 中央値が更新された
                ans += x - y;
                swap(x, y);
            }
            L.insert(x), R.insert(y);
        } else {
            cout << *--L.end() << " " << ans << '\n';
        }
    }
    return 0;
}