import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
public class Solution {
private static int[] stkArr = null;
private static int[] stkMaxArr = null;
private static int maxPointer = 0;
private static int currentPointer =-1;
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
stkArr = new int[N];
stkMaxArr = new int[N];
for(int i=0;i<N;i++)
{
int m = sc.nextInt();
if(m==1)
{
int x = sc.nextInt();
push(x);
}else if(m==2){
pop();
}else if(m==3){
printMax();
}
}
}
public static void push(int x){
currentPointer++;
stkArr[currentPointer]=x;
if(maxPointer==0 || x>stkMaxArr[maxPointer-1]){
stkMaxArr[maxPointer]=x;
maxPointer++;
}else if(x==stkMaxArr[maxPointer-1])
{
stkMaxArr[maxPointer]=x;
maxPointer++;
}
}
public static void pop(){
int val = stkArr[currentPointer];
stkArr[currentPointer]=0;
currentPointer--;
if(maxPointer>0 && val==stkMaxArr[maxPointer-1]){
stkMaxArr[maxPointer-1]=0;
maxPointer--;
}else if(maxPointer==0){
stkMaxArr[maxPointer]=0;
}
}
public static void printMax()
{
System.out.println(stkMaxArr[maxPointer-1]);
}
}