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

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

    {
        strings_t v;
        v.push_back( "one" ); v.push_back( "two" ); v.push_back( "three" );
        m.insert( std::make_pair( 1, v ) );
    }
    {
        strings_t v;
        v.push_back( "ten" ); v.push_back( "twenty" ); v.push_back( "thirty" );
        m.insert( std::make_pair( 10, v ) );
    }
    {
        strings_t v;
        v.push_back( "foutry" ); v.push_back( "two" );
        m.insert( std::make_pair( 42, v ) );
    }

    for ( map_t::const_iterator i = m.begin(), e = m.end(); i != e; ++i ) {
        std::cout << i->first << " : " << std::endl;
        for ( strings_t::const_iterator i_v = i->second.begin(), e_v = i->second.end(); i_v != e_v; ++i_v ) {
            std::cout << (*i_v) << std::endl;
        }
    }
}