#include <utility>
#include <vector>
#include <iostream>
 
template<typename T>
void printVector(std::vector<T>& vec) {
 
    std::cout << "std::vector[ " << vec.size() << " ]( "; 
 
    for (size_t i = 0; i < vec.size(); i++) {
        std::cout << vec[i] << " ";
    }
 
    std::cout << ")" << std::endl;
}
 
template<typename T, typename U>
void printVector(std::vector<std::pair<T, U>>& vec) {
 
    std::cout << "std::vector[ " << vec.size() << " ]( "; 
 
    for (size_t i = 0; i < vec.size(); i++) {
        std::cout << "{ " <<vec[i].first << "," << vec[i].second << "} ";
    }
 
    std::cout << ")" << std::endl;
}
 
int main() {
 
    std::vector<std::pair<int, int>> vec = {{42, 69}, {96, 24}};
    printVector(vec);
 
    // Array of vectors
    std::vector<int> vecs[3]; // 3 std::vector<int>
 
    // Vector of vectors
    std::vector<std::vector<int>> vecOfVecs; // Vector which stores vectors
 
    return 0;
}