#include <iostream>
#include <string>
using namespace std;
struct node {
int value;
node * next;
node * previous;
node( int v, node * n = NULL ) {
value = v;
previous = next;
next = n;
}
} ;
struct chain {
node * head;
chain( node * h = NULL ) {
head = h;
}
~chain( ) {
clear( ) ;
}
int push( int v) {
head = new node( v, head) ;
return v;
}
int pop( ) {
int v = head- > value;
node * n = head;
head = head- > previous;
delete n;
return v;
}
int back( ) {
return head- > value;
}
void clear( ) {
while ( head ! = NULL ) {
node * n = head;
head = head- > next;
delete n;
}
}
int size( ) {
int size = 0 ;
for ( node * i = head; i ! = NULL ; i = i- > next) size++ ;
return size;
}
bool empty( ) { return head == NULL ; }
} stack;
int main( ) {
string s;
while ( cin >> s) {
if ( s == "exit" ) { cout << "bye\n " << head- > previous; return 0 ; }
if ( s == "push" ) { int x; cin >> x; stack.push ( x) ; cout << "ok\n " ; }
if ( s == "pop" )
if ( stack.empty ( ) ) cout << "error" << endl;
else cout << stack.pop ( ) << endl;
if ( s == "back" )
if ( stack.empty ( ) ) cout << "error" << endl;
else cout << stack.back ( ) << endl;
if ( s == "clear" ) { stack.clear ( ) ; cout << "ok\n " ; }
if ( s == "size" ) { cout << stack.size ( ) << endl; }
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IG5vZGUgewoJaW50IHZhbHVlOwoJbm9kZSAqIG5leHQ7Cglub2RlICogcHJldmlvdXM7Cglub2RlKGludCB2LCBub2RlICogbiA9IE5VTEwpIHsKCQl2YWx1ZSA9IHY7CgkJcHJldmlvdXMgPSBuZXh0OwoJCW5leHQgPSBuOwoJfQp9OwoKc3RydWN0IGNoYWluIHsKCW5vZGUgKiBoZWFkOwoJY2hhaW4obm9kZSAqIGggPSBOVUxMKSB7CgkJaGVhZCA9IGg7Cgl9Cgl+Y2hhaW4oKSB7CgkJY2xlYXIoKTsKCX0KCWludCBwdXNoKGludCB2KSB7CgkJaGVhZCA9IG5ldyBub2RlKHYsIGhlYWQpOwoJCXJldHVybiB2OwoJfQoJaW50IHBvcCgpIHsKCQlpbnQgdiA9IGhlYWQtPnZhbHVlOwoJCW5vZGUgKiBuID0gaGVhZDsKCQloZWFkID0gaGVhZC0+cHJldmlvdXM7CgkJZGVsZXRlIG47CgkJcmV0dXJuIHY7Cgl9CglpbnQgYmFjaygpIHsKCQlyZXR1cm4gaGVhZC0+dmFsdWU7Cgl9Cgl2b2lkIGNsZWFyKCkgewoJCXdoaWxlKGhlYWQgIT0gTlVMTCkgewoJCQlub2RlICogbiA9IGhlYWQ7CgkJCWhlYWQgPSBoZWFkLT5uZXh0OwoJCQlkZWxldGUgbjsKCQl9Cgl9CglpbnQgc2l6ZSgpIHsKCQlpbnQgc2l6ZSA9IDA7CgkJZm9yKG5vZGUgKiBpID0gaGVhZDsgaSAhPSBOVUxMOyBpID0gaS0+bmV4dCkgc2l6ZSsrOwoJCXJldHVybiBzaXplOwoJfQoJYm9vbCBlbXB0eSgpIHtyZXR1cm4gaGVhZCA9PSBOVUxMO30KfSBzdGFjazsKCmludCBtYWluKCkgewoJc3RyaW5nIHM7Cgl3aGlsZSAoY2luID4+IHMpIHsKCQlpZiAocyA9PSAiZXhpdCIpIHtjb3V0IDw8ICJieWVcbiIgPDwgaGVhZC0+cHJldmlvdXM7IHJldHVybiAwO30KCQlpZiAocyA9PSAicHVzaCIpIHtpbnQgeDsgY2luID4+IHg7IHN0YWNrLnB1c2goeCk7IGNvdXQgPDwgIm9rXG4iO30KCQlpZiAocyA9PSAicG9wIikgCgkJCWlmIChzdGFjay5lbXB0eSgpKSBjb3V0IDw8ICJlcnJvciIgPDwgZW5kbDsKCQkJZWxzZSBjb3V0IDw8IHN0YWNrLnBvcCgpIDw8IGVuZGw7CgkJaWYgKHMgPT0gImJhY2siKSAKCQkJaWYgKHN0YWNrLmVtcHR5KCkpIGNvdXQgPDwgImVycm9yIiA8PCBlbmRsOwoJCQllbHNlIGNvdXQgPDwgc3RhY2suYmFjaygpIDw8IGVuZGw7CgkJaWYgKHMgPT0gImNsZWFyIikge3N0YWNrLmNsZWFyKCk7IGNvdXQgPDwgIm9rXG4iO30KCQlpZiAocyA9PSAic2l6ZSIpIHtjb3V0IDw8IHN0YWNrLnNpemUoKSA8PCBlbmRsO30KCX0KfQ==