#define _USE_MATH_DEFINES
#include <iostream>
#include <vector>
#include <queue>
#include <stack>
#include <set>
#include <map>
#include <algorithm>
#include <functional>
#include <bitset>
#include <iterator>
#include <valarray>
#include <complex>
#include <utility>
#include <string>
#include <sstream>
#include <tuple>
#include <initializer_list>
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <cctype>
#include <cmath>
#include <cassert>
using namespace std;
#define rep(i, n) for (int i = 0; i < (int)(n); ++i)
#define all(c) (c).begin(),(c).end()
#define mt make_tuple
#define pb push_back
typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef vector<vl> vvl;
typedef tuple<int, int> tii;
template<typename T> ostream &operator<<(ostream &os, set<T> const &s) { if (s.size() == 0) return os << "{}"; os << "{"; decltype(s.begin()) iter; for (iter = s.begin(), ++iter; iter != s.end(); ++iter) { --iter; os << *iter << ", "; ++iter; } --iter; os << *iter << '}'; return os; }
template<typename T> ostream &operator<<(ostream &os, multiset<T> const &s) { if (s.size() == 0) return os << "{}"; os << "{"; decltype(s.begin()) iter; for (iter = s.begin(), ++iter; iter != s.end(); ++iter) { --iter; os << *iter << ", "; ++iter; } --iter; os << *iter << '}'; return os; }
template<typename T, typename U> ostream &operator<<(ostream &os, map<T, U> const &mp) { if (mp.size() == 0) return os << "{}"; os << "{" << endl; decltype(mp.begin()) iter; for (iter = mp.begin(), ++iter; iter != mp.end(); ++iter) { --iter; os << "  {" << iter->first << ", " << iter->second << "}," << endl; ++iter; } --iter; os << "  {" << iter->first << ", " << iter->second << "}" << endl << '}'; return os; }
template<typename T> ostream &operator<<(ostream &os, vector<T> const &v) { os << '['; rep(i, v.size()-1) os << v[i] << ", "; if (v.size() > 0) os << v[v.size()-1]; cerr << ']'; return os; }
template<typename T, unsigned N, unsigned Last> struct TuplePrinter { static void print(ostream &os, T const& v) { os << std::get<N>(v) << ", "; TuplePrinter<T, N + 1, Last>::print(os, v); } };
template<typename T, unsigned N> struct TuplePrinter<T, N, N> { static void print(ostream &os, T const &v) { os << std::get<N>(v); } };
template<typename... Types> ostream& operator<<(ostream &os, tuple<Types...> const &v) { os << "("; TuplePrinter<tuple<Types...>, 0, sizeof...(Types) - 1>::print(os, v); os << ")"; return os; }
template<typename T> void _dbg(T const &t) { cerr << t << endl; }
template<typename T, typename... Args> void _dbg(T const &t, Args... args) { cerr << t << " "; _dbg(args...); }
template<typename... Args> void __dbg(const char *fn, int l, Args... args) { cerr << "[" << fn << ":" << l << "] "; _dbg(args...); }
#define dbg(...) __dbg(__func__, __LINE__, __VA_ARGS__)

const ll infty = 1223372036854775807;
const double eps = 1e-8;



int main(int argc, char *argv[]) {
  // cin.tie(0); cout.sync_with_stdio(false);
  int Q;
  cin >> Q;
  
  multiset<int> left, right;
  int n = 0;
  int mid;
  ll ls = 0, rs = 0, bs = 0;
  rep(I, Q) {
	  int cmd;
	  cin >> cmd;
	  if (cmd == 1) {
		  // update
		  int a, b;
		  cin >> a >> b;
		  bs += b;
		  if (n == 0) {
			  mid = a;
		  } else if (n % 2 == 0) {
			  int lmax = *left.rbegin();
			  int rmin = *right.begin();
			if (a <= lmax) {
				left.erase(prev(left.end()));
				left.insert(a);
				mid = lmax;
				ls -= lmax;
				ls += a;
			} else if (a >= rmin) {
				right.erase(right.begin());
				right.insert(a);
				mid = rmin;
				rs -= rmin;
				rs += a;
			} else {
				mid = a;
			}
		  } else {
			  if (a > mid) {
				  right.insert(a);
				  left.insert(mid);
				  rs += a;
				  ls += mid;
			  } else {
				  left.insert(a);
				  right.insert(mid);
				  ls += a;
				  rs += mid;
			  }
		  }
		  n += 1;
		  /*
		  if (n % 2 == 1) {
			dbg(left, mid, right, " | ", ls, rs);
		  } else {
			dbg(left, right, " | ", ls, rs, bs);
		  }
		  */
	  } else {
		  // read
		  if (n % 2 == 0) {
			  cout << *left.rbegin() << " " << bs + rs - ls << endl;
		  } else {
			  cout << mid << " " << bs + rs - ls << endl;
		  }
	  }
  }
  return 0;
}


Measured memory_bytes: 9600