- #include <iostream> 
- #include <memory> 
-   
- using namespace std; 
-   
- template <typename T> 
- class StackNode{ 
- public: 
-     T data_{}; 
-     std::unique_ptr<StackNode<T>> next_; 
-   
-     explicit StackNode(const T& data_) : data_(data_),next_(nullptr) {} 
-   
- }; 
- template <typename T> 
- class Stack{ 
- private: 
-   
-     std::unique_ptr<StackNode<T>> top_; 
-     std::size_t size_{}; 
-   
- public: 
-     Stack() : top_(nullptr), size_ (0){} 
-     void push(const T& item){ 
-         std::unique_ptr<StackNode<T>> p = std::make_unique<StackNode<T>>(item); 
-         p->next_ = std::move(top_); 
-         top_ = std::move(p); 
-     } 
-   
-     T pop(){ 
-         T p = top_->data_; 
-         top_ = std::move(top_->next_); 
-         return p; 
-     } 
-   
-     T peek(){ 
-         return top_->data_; 
-     } 
-   
- }; 
-   
- int main() { 
-   
- 	Stack<int> stack{}; 
- 	stack.push(12); 
- 	stack.push(13); 
- 	std::cout << stack.peek() << std::endl; 
- 	stack.pop(); 
- 	std::cout << stack.peek() << std::endl; 
-   
- 	return 0; 
- } 
				I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWVtb3J5PgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgpjbGFzcyBTdGFja05vZGV7CnB1YmxpYzoKICAgIFQgZGF0YV97fTsKICAgIHN0ZDo6dW5pcXVlX3B0cjxTdGFja05vZGU8VD4+IG5leHRfOwoKICAgIGV4cGxpY2l0IFN0YWNrTm9kZShjb25zdCBUJiBkYXRhXykgOiBkYXRhXyhkYXRhXyksbmV4dF8obnVsbHB0cikge30KCn07CnRlbXBsYXRlIDx0eXBlbmFtZSBUPgpjbGFzcyBTdGFja3sKcHJpdmF0ZToKCiAgICBzdGQ6OnVuaXF1ZV9wdHI8U3RhY2tOb2RlPFQ+PiB0b3BfOwogICAgc3RkOjpzaXplX3Qgc2l6ZV97fTsKCnB1YmxpYzoKICAgIFN0YWNrKCkgOiB0b3BfKG51bGxwdHIpLCBzaXplXyAoMCl7fQogICAgdm9pZCBwdXNoKGNvbnN0IFQmIGl0ZW0pewogICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTdGFja05vZGU8VD4+IHAgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0YWNrTm9kZTxUPj4oaXRlbSk7CiAgICAgICAgcC0+bmV4dF8gPSBzdGQ6Om1vdmUodG9wXyk7CiAgICAgICAgdG9wXyA9IHN0ZDo6bW92ZShwKTsKICAgIH0KCiAgICBUIHBvcCgpewogICAgICAgIFQgcCA9IHRvcF8tPmRhdGFfOwogICAgICAgIHRvcF8gPSBzdGQ6Om1vdmUodG9wXy0+bmV4dF8pOwogICAgICAgIHJldHVybiBwOwogICAgfQoKICAgIFQgcGVlaygpewogICAgICAgIHJldHVybiB0b3BfLT5kYXRhXzsKICAgIH0KCn07CgppbnQgbWFpbigpIHsKCQoJU3RhY2s8aW50PiBzdGFja3t9OwoJc3RhY2sucHVzaCgxMik7CglzdGFjay5wdXNoKDEzKTsKCXN0ZDo6Y291dCA8PCBzdGFjay5wZWVrKCkgPDwgc3RkOjplbmRsOwoJc3RhY2sucG9wKCk7CglzdGQ6OmNvdXQgPDwgc3RhY2sucGVlaygpIDw8IHN0ZDo6ZW5kbDsKCQoJcmV0dXJuIDA7Cn0=