#include <iostream>

template <typename T, std::size_t N>
void Function(const T (&a)[N])
{
    std::cout << "{";
    const char* sep = "";
    for (const auto& e : a) {
        std::cout << sep << e;
        sep = ", ";
    }
    std::cout << "}\n";
}

template <typename T, typename... Ts>
void Function(const T& t, const Ts&... args)
{
    Function(t);
    Function(args...);
}

int main()
{
    int P1[] = {0, 1, 2, 3, 4};
    const char* P2[] = {"Hello", "World"};
    // ...
    char Pn[] = {'0', '1', 'A', 'Z'};

    Function(P1, P2, Pn);
}
