#include <iostream>
#include <vector>
#include <tuple>

using namespace std;

template<typename... Ts>
struct Typelist
{
  static constexpr std::size_t size { sizeof...(Ts) };   
};

template<class, class> class World;

template<template<typename... Arg1> class T1, template<typename... Arg2> class T2>
class World<Typelist, Typelist>
{

private:
  std::tuple<std::vector<T1>...> m1;
  std::tuple<std::vector<T2>...> m2;
};


int main() {
	// your code goes here
	using TL1 = Typelist<int, char, double>;
	using TL2 = Typelist<float, unsigned int, bool>;
	
	World<TL1, TL2> w2;
	return 0;
}