#include <iostream>
#include <vector>
#include <set>
 
template <template <typename...> class C, typename... T>
struct wrapper {
    typedef C<T...> type;
};
 
int main() {
	wrapper<std::vector, int>::type foo { 1, 2, 3 };
	wrapper<std::set, int>::type bar { 4, 5, 6 };
	
	for (auto i : foo)
  		std::cout << i << ' ';
  	for (auto i : bar)
  		std::cout << i << ' ';
	return 0;
}