// Copyright 2017 <Biagio Festa>
#include <iostream>
#include <vector>
#include <list>

template <template <typename, typename...> class Container, typename T,
          typename... Args>
std::ostream& operator<<(std::ostream& os, const Container<T, Args...>& c) {
  os << "[";
  for (const auto& v : c) {
    os << v << " ";
  }
  os << "]";
  return os;
}

int main(int argc, char *argv[]) {
  std::vector<int> v = {1, 2, 3, 4};
  std::list<int> l = {1, 2, 3, 4};

  std::cout << v << '\n';
  std::cout << l << '\n';

  return 0;
}
