#include <vector>

template <typename D>
std::vector<D> struct_vector(D d, int a) {
    std::vector<D> result(a, d);
    return result;
}

template <typename D>
std::vector<std::vector<D>> struct_vector(D d, int a, int b) {
    std::vector<std::vector<D>> result(a, struct_vector(d, b));
    return result;
}

template <typename D>
std::vector<std::vector<std::vector<D>>> struct_vector
(D d, int a, int b, int c) {
    std::vector<std::vector<std::vector<D>>>
            result(a, struct_vector(d, b, c));
    return result;
}

template<typename D, typename... Args>
auto initialize_vector(D d, Args... args) {
    return struct_vector(d, args...);
}