#D5452. Map: Search

    ID: 4530 Type: Default 2000ms 268MiB

Map: Search

For a dictionary MM that stores elements formed by a pair of a string key and an integer value, perform a sequence of the following operations. Note that each key in MM must be unique.

  • insert(keykey, xx): Insert an element formed by a pair of keykey and xx to MM. If there is an element with keykey, replace the corresponding value with xx.
  • get(keykey): Print the value with the specified keykey.

Constraints

  • 1q200,0001 \leq q \leq 200,000
  • 1x1,000,000,0001 \leq x \leq 1,000,000,000
  • 11 \leq length of keykey 20 \leq 20
  • keykey consits of lower-case letter
  • For a get operation, the element with the specified key exists in MM.

Input

The input is given in the following format.

qq query1query_1 query2query_2 : queryqquery_q

Each query queryiquery_i is given by

0 keykey xx

or

1 keykey

where the first digits 0, 1 and 2 represent insert and get operations respectively.

Output

For each get operation, print an integer in a line.

Example

Input

7 0 blue 4 0 red 1 0 white 5 1 red 1 blue 0 black 8 1 black

Output

1 4 8

inputFormat

Input

The input is given in the following format.

qq query1query_1 query2query_2 : queryqquery_q

Each query queryiquery_i is given by

0 keykey xx

or

1 keykey

where the first digits 0, 1 and 2 represent insert and get operations respectively.

outputFormat

Output

For each get operation, print an integer in a line.

Example

Input

7 0 blue 4 0 red 1 0 white 5 1 red 1 blue 0 black 8 1 black

Output

1 4 8

样例

7
0 blue 4
0 red 1
0 white 5
1 red
1 blue
0 black 8
1 black
1

4 8

</p>