#pragma once #include #include #include #define BIT(x) (1< void Log(const T& var) { std::cout << var; } template void Log(const T& var, const Ts& ...vars) { Log(var); Log(vars...); } template void LogHelper(const T& var) { Log(var); std::cout << std::endl; } template void LogHelper(const T& var, const Ts& ...vars) { Log(var); Log(vars...); std::cout << std::endl; } template std::ostream& operator<<(std::ostream& ostream, const std::vector& vec) { ostream << "[" << std::endl; for (size_t i = 0; i < vec.size(); i++) { if (i != 0) ostream << ", " << std::endl; ostream << vec[i]; } ostream << std::endl << "]"; return ostream; } template std::ostream& operator<<(std::ostream& ostream, const std::set& set) { ostream << "[" << std::endl; int i = 0; for (const auto& elem : set) { if (i != 0) ostream << ", " << std::endl; ostream << " " << elem; i++; } ostream << std::endl << "]"; return ostream; }