Iahub likes trees very much. Recently he discovered an interesting tree named propagating tree. The tree consists of *n* nodes numbered from 1 to *n*, each node *i* having an initial value *a*<sub class="lower-index">*i*</sub>. The root of the tree is node 1.

This tree has a special property: when a value *val* is added to a value of node *i*, the value -*val* is added to values of all the children of node *i*. Note that when you add value -*val* to a child of node *i*, you also add -(-*val*) to all children of the child of node *i* and so on. Look an example explanation to understand better how it works.

This tree supports two types of queries:
 -  "1 *x* *val*" — *val* is added to the value of node *x*; -  "2 *x*" — print the current value of node *x*. 
In order to help Iahub understand the tree better, you must answer *m* queries of the preceding type.
The first line contains two integers *n* and *m* (1 ≤ *n*, *m* ≤ 200000). The second line contains *n* integers *a*<sub class="lower-index">1</sub>, *a*<sub class="lower-index">2</sub>, ..., *a*<sub class="lower-index">*n*</sub> (1 ≤ *a*<sub class="lower-index">*i*</sub> ≤ 1000). Each of the next *n*–1 lines contains two integers *v*<sub class="lower-index">*i*</sub> and *u*<sub class="lower-index">*i*</sub> (1 ≤ *v*<sub class="lower-index">*i*</sub>, *u*<sub class="lower-index">*i*</sub> ≤ *n*), meaning that there is an edge between nodes *v*<sub class="lower-index">*i*</sub> and *u*<sub class="lower-index">*i*</sub>.

Each of the next *m* lines contains a query in the format described above. It is guaranteed that the following constraints hold for all queries: 1 ≤ *x* ≤ *n*, 1 ≤ *val* ≤ 1000.
def dfs_recursive(root, no_of_nodes, value_to_be_added, value_array, adjList):
    value_array[root-1] += value_to_be_added
    for children in adjList[root]:
        value_array = dfs_recursive(children, no_of_nodes, -
                                    (value_to_be_added), value_array, adjList)
    return value_array


no_of_nodes, no_of_queries = map(int, input().split(' '))
value_of_nodes = list(map(int, input().split(' ')))


adj_list = {node: [] for node in range(1, no_of_nodes+1)}

for node in range(1, no_of_nodes):
    strt_node, end_node = map(int, input().split(' '))
    adj_list[strt_node].append(end_node)
for m in range(no_of_queries):
    input_list = list(map(int, input().split(' ')))
    if (len(input_list) == 3):
        value_of_nodes = dfs_recursive(input_list[1], no_of_nodes,
                                       input_list[2], value_of_nodes, adj_list)
        print(value_of_nodes)
    else:
        print(value_of_nodes[input_list[1]-1])
