# Dijkstra algorithm

# Dwarf Tower

Little Vasya is playing a new game named "Dwarf Tower". In this game there are **n** different items, which you can put on your dwarf character. Items are numbered from **1** to **n**. Vasya wants to get the item with number **1**.

There are two ways to obtain an item:

- You can buy an item. The
**i**-th item costs`c`

money._{i} - You can craft an item. This game supports only
**m**types of crafting. To craft an item, you give two particular different items and get another one as a result.

Help Vasya to spend the least amount of money to get the item number **1**.

#### Input

The first line contains two integers **n** and **m** (**1** ≤ **n** ≤ **10000**, **0** ≤ **m** ≤ **100000**) - the number of different items and the number of crafting types.

The second line contains **n** integers `c`

- values of the items (_{i}**0** ≤ `c`

≤ _{i}`10`

).^{9}

The following **m** lines describe crafting types, each line contains three distinct integers `a`

, _{i}`x`

, _{i}`y`

- _{i}`a`

is the item that can be crafted from items _{i}`x`

and _{i}`y`

(_{i}**1** ≤ `a`

, _{i}`x`

, _{i}`y`

≤ _{i}**n**, `a`

≠ _{i}`x`

, _{i}`x`

≠ _{i}`y`

, _{i}`y`

≠ _{i}`a`

)._{i}

#### Output

Print a single integer - the least amount of money to spend.

5 3 5 0 1 2 5 5 2 3 4 2 3 1 4 5

2

3 1 2 2 1 1 2 3

2