#include <iostream>
#include <vector>

template<typename T>
void print( const T &t ) 
{ 
    std::cout << t; 
}

template<typename T>
void print( const std::vector<T> &v ) 
{ 
    std::cout << '[';
    for( auto it = v.begin(); it != v.end(); ++it ) {
         if( it != v.begin() ) std::cout << ',';
         print( *it );
    }
    std::cout << ']';
}


int main() {
    std::vector<std::vector<int>> vv = { {1,2,3}, {4,5} };
    print(vv);
    return 0;
}