#include<iostream>
#include<map>
#include<string>
#include<algorithm>
using namespace std;

int main()
{
    multimap<string,int> m;                  //通常のmapはkeyに対して1つの値を持つ。multimapになると、keyにいくつもの値を持たせることが出来る。
    int n, q, x;
    string k, s;

    cin >> n;

    for( int i = 0; i < n; i++ )
    {
        cin >> q >> k;

        if( q == 0 )
        {
            cin >> x;
            m.insert( make_pair( k, x ) );
        }
        else if( q == 1 )
        {
            multimap<string,int>::iterator itr = m.find(k);
            if( itr != m.end() )
            {
                for(; itr != m.upper_bound(k); itr++ )
                    if( itr -> first == k )
                        cout << itr -> second << endl;
            }
        }
        else if( q == 2 )
            m.erase(k);
        else
        {   
            cin >> s;
            multimap<string,int>::iterator l = m.lower_bound(k), r = m.upper_bound(s);
            for( ; l != r; l++ )
                cout << l -> first << " " << l -> second << endl;                   // mapのkeyと対応する値にアクセスする場合、アロー演算子を用いる
        }                                                                               // (*l).first, (*l).secondというアクセス方法もある

    }
    return 0;
}
