//模拟栈
#include<iostream>
#include<string>
using namespace std;
const int N = 100010;
int stk[N], tt; // 分别表示栈和栈里的元素个数
int x;
// 插入
void push(int x)
{
stk[++tt] = x;
}
// 弹出
void pop()
{
tt--;
}
// 判断栈是否为空
bool check()
{
if (tt > 0) return false;
else return true;
}
// 查询栈顶元素
int query()
{
return stk[tt];
}
int main()
{
int m;
cin >> m;
while (m--)
{
string op;
cin >> op;
if (op == "push")
{
cin >> x;
push(x);
}
else if (op == "pop")
{
pop();
}
else if (op == "empty")
{
if (check()) cout << "YES" << endl;
else cout << "NO" << endl;
}
else if (op == "query")
{
cout << query() << endl;
}
}
return 0;
}