#include <iostream>

template<typename T, size_t Length>
size_t f(const T (&)[Length]) {
    return Length;
}

template<typename T, size_t Length, typename... Args>
size_t f(const T (&)[Length], Args... rest) {
    return Length + f(rest...);
}

int main() {
    int a[] = { 1, 2, 3 }, b[] = { 1, 2, 3, 4, 5 }, c[] = { 1 };

    std::cout << f(a, b, c);
}
