#include<bits/stdc++.h>
using namespace std;
struct flower{
int w = 0,c = 0;
}flo[10001],maxn,minn;
bool srch(int num,int c){
while(num){
if(flo[num].c == c)return false;
num--;
}
return true;
}
void bs1(int &num,int w,int c){
if(srch(num,c)){
num++;
flo[num].w = w;
flo[num].c = c;
if(flo[num].c >= maxn.c){
maxn.c = c;
maxn.w = w;
}
if(flo[num].c <= minn.c){
minn.w = w;
minn.c = c;
}
return;
}else return;
}
void bs2(int &num){
if(num == 0)return;
int i;
for(i = 1;i <= num;i++){
if(flo[i].c == maxn.c){
for(int j = i;j < num;j++){
flo[j].c = flo[j + 1].c;
flo[j].w = flo[j + 1].w;
}
flo[num].c = 0;
flo[num].w = 0;
num--;
break;
}
}
return;
}
void bs3(int &num){
if(num == 0)return;
int i;
for(i = 1;i <= num;i++){
if(flo[i].c == minn.c){
for(int j = i;j < num;j++){
flo[j].c = flo[j + 1].c;
flo[j].w = flo[j + 1].w;
}
flo[num].c = 0;
flo[num].w = 0;
num--;
break;
}
}
return;
}
int main(){
int ans = 0,w,c,num = 0,pay = 0;
int n = 0;
cin >> n;
minn.c = 1000000;
while(n != -1){
switch(n){
case 1 : cin >> w >> c; bs1(num,w,c);
case 2 : bs2(num);
default : bs3(num);
}
cin >> n;
}
for(int i = 1;i <= num;i++){
ans += flo[i].w;
pay += flo[i].c;
}
cout << ans << " " << pay << endl;
return 0;
}