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

int main()
{	
	std::multimap<std::string, long long int> M;
	
	int q; std::string sq;
	getline(std::cin, sq); q = std::stoi(sq);
	for (int i=0; i<q; i++) {
		std::string key;
		int op;
		long long int x;
		std::string L, R;
		int sp_pos;
		std::multimap<std::string, long long int>::iterator lb, ub;
		
		std::string buf;
		getline(std::cin, buf);
		op = buf[0] - '0';
		
		if (op==0) {
			sp_pos = buf.find(' ', 2);
			key = buf.substr(2, sp_pos-2);
			x = std::stoll(buf.substr(sp_pos+1));
			M.insert(std::make_pair(key, x));
		} else if (op == 1) {
			key = buf.substr(2);
			if (M.find(key) != M.end()) {
				lb = M.equal_range(key).first;
				ub = M.equal_range(key).second;
				for (std::multimap<std::string, long long int>::iterator it = lb; it != ub; ++it) {
					std::cout << it->second << std::endl;
				}
			}
			// else std::cout << 0 << std::endl;
		} else if (op==2) {
			key = buf.substr(2);
			M.erase(key);
		} else {
			sp_pos = buf.find(' ', 2);
			L = buf.substr(2, sp_pos-2);
			R = buf.substr(sp_pos+1);
			lb = M.lower_bound(L);
			ub = M.upper_bound(R);
			for (std::multimap<std::string, long long int>::iterator it = lb; it != ub; ++it) {
				std::cout << it->first << " " << it->second << std::endl;
			}
		}
	}
	
	return 0;
}

