#include<iostream>
#include<string>
#include<stack>usingnamespacestd;stack<int>s1,s2;intN;intmain(void){cin.tie(NULL);cout.tie(NULL);ios_base::sync_with_stdio(false);cin>>N;for(inti=0;i<N;i++){stringcommand;cin>>command;if(command=="push"){//push는 첫 번째 스택에 그대로 쌓으면 됩니다.intnum;cin>>num;s1.push(num);}if(command=="pop"){if(!s2.empty()){//두 번째 스택이 비지 않았으면 topcout<<s2.top()<<'\n';s2.pop();}else{//두 번재 스택이 비었으면while(!s1.empty()){//첫 번째 스택을 두 번째 스택으로 이동s2.push(s1.top());s1.pop();}if(s2.empty())cout<<"-1\n";//두 번재 스택이 또 비면 -1else{cout<<s2.top()<<'\n';// 아니면 tops2.pop();}}}if(command=="size"){// 스택 2개의 size의 합cout<<s1.size()+s2.size()<<'\n';}if(command=="empty"){// 스택 2개다 비었으면 1 아니면 0if(s1.empty()&&s2.empty())cout<<"1\n";elsecout<<"0\n";}if(command=="front"){// 큐의 맨 앞 원소 출력if(!s2.empty()){// 두 번째 스택이 비지 않았으면 topcout<<s2.top()<<'\n';}else{// 두 번째 스택이 비었으면while(!s1.empty()){// 첫 번째 스택을 두 번째 스택으로 이동s2.push(s1.top());s1.pop();}if(s2.empty())cout<<"-1\n";//두 번째 스택이 비었으면 -1elsecout<<s2.top()<<'\n';//두 번째 스택이 비지 않았으면 top}}if(command=="back"){// 큐의 맨 마지막 원소 출력if(!s1.empty()){//첫 번째 스택이 비지 않았으면 topcout<<s1.top()<<'\n';}else{// 첫 번째 스택이 비었으면while(!s2.empty()){//두 번째 스택을 첫 번째 스택으로 이동s1.push(s2.top());s2.pop();}if(s1.empty())cout<<"-1\n";// 첫 번째 스택이 비었으면 -1elsecout<<s1.top()<<'\n';//첫 번째 스택 비지 않았으면 top}}}return0;}