#include <bits/stdc++.h>
using namespace std;
/* Head ends here */
void median(vector<char> s,vector<int> X) {
multiset<ll> st1,st2;
for(int i=0;i<X.size();i++){
if(s[i]=='a'){
if(st1.size()==0){
st1.insert(X[i]);
}else if(*st1.rbegin()>=X[i]){
st1.insert(X[i]);
if(st1.size()==st2.size()+2){
int v=*(st1.rbegin());
st1.erase(st1.find(v));
st2.insert(v);
}
}else{
st2.insert(X[i]);
if(st1.size()<st2.size()){
int v=*st2.begin();
st1.insert(v);
st2.erase(st2.find(v));
}
}
}else{
if(st1.find(X[i])==st1.end()&&st2.find(X[i])==st2.end()){
printf("Wrong!\n");
continue;
}else if(st1.find(X[i])==st1.end()){
st2.erase(st2.find(X[i]));
if(st1.size()==st2.size()+2){
int v=*(st1.rbegin());
st1.erase(st1.find(v));
st2.insert(v);
}
}else{
st1.erase(st1.find(X[i]));
if(st1.size()<st2.size()){
int v=*(st2.begin());
st2.erase(st2.find(v));
st1.insert(v);
}
}
}
if(st1.size()==0 && st2.size()==0) {
cout<<"Wrong!\n";
continue;
}
if(st1.size()==st2.size()){
if(((*st2.begin())-*(st1.rbegin()))%2==1)
printf("%.1lf\n",(((double)*st1.rbegin())+(double)*(st2.begin()))/2.0);
else{
printf("%.0lf\n",((*st1.rbegin())+*(st2.begin()))/2.0);
}
}else{
printf("%lld\n",*(st1.rbegin()));
}
}
}
int main(void){
int N;
cin >> N;
vector<char> s;
vector<int> X;
char temp;
int tempint;
for(int i = 0; i < N; i++){
cin >> temp >> tempint;
s.push_back(temp);
X.push_back(tempint);
}
median(s,X);
return 0;
}