#include<bits/stdc++.h>
using namespace std;
stack<int>s;
vector<int>mins;
struct mstack
{
stack<int>s,mins,maxs;
void push(int x)
{
if(!s.empty())
{
s.push(x);
mins.push(min(mins.top(),x));
maxs.push(max(maxs.top(),x));
}
else
{
s.push(x);
mins.push(x);
maxs.push(x);
}
return;
}
void pop()
{
s.pop();
mins.pop();
maxs.pop();
return;
}
int get_min()
{
if(s.empty())return 1e9;
return mins.top();
}
int get_max()
{
if(s.empty())return -1e9;
return maxs.top();
}
bool empty()
{
return s.empty();
}
int top()
{
return s.top();
}
int size()
{
return s.size();
}
};
struct mqueue
{
vector<int>temp;
queue<int>que;
mstack left,right;
void pop()
{
if(!left.empty())
{
left.pop();
que.pop();
}
else
{
while(!right.empty())
{
left.push(right.top());
right.pop();
}
left.pop();
que.pop();
}
}
void push(int x)
{
que.push(x);
right.push(x);
}
int get_max()
{
return max(left.get_max(),right.get_max());
}
int get_min()
{
return min(left.get_min(),right.get_min());
}
bool empty()
{
return que.empty();
}
int front()
{
return que.front();
}
int back()
{
return que.back();
}
int size()
{
return que.size();
}
};
int main()
{
return 0;
}