Processing math: 100%

時間制限 : sec, メモリ制限 : KB
English / Japanese  

Multi-Map

キーが文字列、値が整数である辞書Mに対して、以下の操作を行ってください。ただし、辞書Mはキーの重複を許します。

  • insert(key, x): Mにキーがkeyで値がxである要素を挿入する。
  • get(key): キーがkey である値を全て出力する
  • delete(key): キーがkeyである全ての要素をMから削除する。
  • dump(L, R): キーが辞書式順でL以上R以下である要素の、キーと値の組を順番に出力する。

Input

入力は以下の形式で与えられます。

q
query1
query2
:
queryq

各クエリqueryi

0 key x

または

1 key

または

2 key

または

3 L R

の形式で与えられます。最初の数字0, 1, 2, 3 は操作の種類を示し、それぞれinsert、get、delete、dump を表します。

Output

各get操作ごとに、キーに対応する値を、挿入された順番に1行ずつ出力してください。また、各dump操作ごとに、キーと値の組を1行ずつ空白で区切って出力してください。このとき、辞書順でキーが小さいものから出力し、同じキーの値は、挿入された順番に出力してください。

Constraints

  • 1q200,000
  • 1x1,000,000,000
  • 1 keyの長さ 20
  • keyは英小文字
  • L は辞書式順で R より小さいか等しい
  • get操作で出力される要素の総数は 500,000 を超えない
  • dump操作で出力される要素の総数は 500,000 を超えない

Sample Input 1

10
0 blue 6
0 red 1
0 blue 4
0 white 5
1 red
1 blue
2 red
1 black
1 red
3 w z

Sample Output 1

1
6
4
white 5

 
BESsBESsBESsBESsBESsBESsBESsBESs