#include <iostream>
#include <stack>
using namespace std;
int c[100010];
int lowbit(int x)
{
return x & (-x);
}
int getsum(int x)
{
int sum = 0;
while(x > 0)
{
sum += c[x];
x -= lowbit(x);
}
return sum;
}
void update(int x, int val)
{
while(x <= 100000)
{
c[x] += val;
x += lowbit(x);
}
}
int getnum(int low, int high, int goal)
{
int mid, sum;
while(low < high)
{
mid = (low + high) / 2;
sum = getsum(mid);
if(sum >= goal)
{
high = mid;
}
else
{
low = mid + 1;
}
}
return high;
}
int main()
{
int n;
scanf("%d", &n);
int i, flag, num, size, index;
char s[20], ch;
stack<int> st;
for(i = 1; i <= n; i++)
{
getchar();
scanf("%s", s);
ch = s[1];
if(ch == 'u')
{
scanf("%d", &num);
flag = -1;
st.push(num);
update(num, 1);
}
else if(ch == 'o')
{
size = st.size();
if(size > 0)
{
flag = 1;
num = st.top();
st.pop();
update(num, -1);
}
else
{
flag = 0;
}
}
else
{
size = st.size();
if(size > 0)
{
flag = 1;
if(size % 2 == 0)
{
index = size / 2;
}
else
{
index = (size + 1) / 2;
}
num = getnum(1, 100000, index);
}
else
{
flag = 0;
}
}
if(flag == 0)
{
printf("Invalid\n");
}
else if(flag == 1)
{
printf("%d\n", num);
}
}
system("pause");
return 0;
}