#include <vector>
#include <iostream>
#include <numeric>

template <typename T>
class stack {
public:
  auto push(T t) -> void { vec_.push_back(t); }
  auto top() -> T& { return vec_.back(); }
  auto pop() -> void { vec_.pop_back(); }
  auto size() const -> std::size_t { return vec_.size(); };
  auto sum() -> int {
    return std::accumulate(vec_.begin(), vec_.end(), 0);
  }
private:
  std::vector<T> vec_;
};
