#include <iostream>
#include <map>
#include <vector>
#include <string>

template< class T >
std::ostream & operator << ( std::ostream & os, const std::vector< T > & v ) {
    for ( const auto & i : v ) {
        os << i << std::endl;
    }
    return os;
}

template< class K, class V >
std::ostream & operator << ( std::ostream & os, const std::multimap< K, V > & m ) {
    for ( const auto & i : m ) {
        os << i.first << " : " << std::endl;
        os << i.second << std::endl;
    }
    return os;
}

int main() {
    std::multimap<int, std::vector< std::string > > m;

    m.insert(std::make_pair( 1, std::vector< std::string >( {"one", "two", "three" } ) ) );
    m.insert(std::make_pair( 10, std::vector< std::string >( {"ten", "twenty", "thirty" } ) ) );
    m.insert(std::make_pair( 42, std::vector< std::string >( {"foutry", "two" } ) ) );
    
    std::cout << m;
}