#pragma once

#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cassert>
#include <functional>
#include <iostream>
#include <map>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <vector>
#include <list>

template<typename T>
auto initialize_vector(T val, int len) {
    std::vector<T> a(len, val);
    return a;
}

template<typename T, typename... Types>
auto initialize_vector(T val, int len, Types... args) {
    auto a = initialize_vector<T>(val, args...);
    typedef decltype(a) b;
    std::vector<b> v(len, a);
    return v;
}