You are given a connected undirected graph with $*n*$ vertices and $*m*$ edges. The vertices are enumerated from $1$ to $*n*$.
You are given $*n*$ integers $*c*_{1}, *c*_{2}, ..., *c*_{*n*}$, each of them is between $- *n*$ and $*n*$, inclusive. It is also guaranteed that the parity of $*c*_{*v*}$ equals the parity of degree of vertex $*v*$. The degree of a vertex is the number of edges connected to it.
You are to write a weight between $- 2·*n*^{2}$ and $2·*n*^{2}$ (inclusive) on each edge in such a way, that for each vertex $*v*$ the sum of weights on edges connected to this vertex is equal to $*c*_{*v*}$, or determine that this is impossible.
Input
The first line contains two integers $*n*$ and $*m*$ ($2 ≤ *n* ≤ 10^{5}$, $*n* - 1 ≤ *m* ≤ 10^{5}$) — the number of vertices and the number of edges.
The next line contains $*n*$ integers $*c*_{1}, *c*_{2}, ..., *c*_{*n*}$ ($- *n* ≤ *c*_{*i*} ≤ *n*$), where $*c*_{*i*}$ is the required sum of weights of edges connected to vertex $*i*$. It is guaranteed that the parity of $*c*_{*i*}$ equals the parity of degree of vertex $*i*$.
The next $*m*$ lines describe edges of the graph. The $*i*$-th of these lines contains two integers $*a*_{*i*}$ and $*b*_{*i*}$ ($1 ≤ *a*_{*i*}, *b*_{*i*} ≤ *n*$; $*a*_{*i*} ≠ *b*_{*i*}$), meaning that the $*i*$-th edge connects vertices $*a*_{*i*}$ and $*b*_{*i*}$.
It is guaranteed that the given graph is connected and does not contain loops and multiple edges.
Output
If there is no solution, print "NO".
Otherwise print "YES" and then $*m*$ lines, the $*i*$-th of them is the weight of the $*i*$-th edge $*w*_{*i*}$ ($- 2·*n*^{2} ≤ *w*_{*i*} ≤ 2·*n*^{2}$).
样例
3 3
2 2 2
1 2
2 3
1 3
YES
1
1
1
4 3
-1 0 2 1
1 2
2 3
3 4
YES
-1
1
1
6 6
3 5 5 5 1 5
1 4
3 2
4 3
4 5
3 5
5 6
YES
3
5
3
-1
-3
5
4 4
4 4 2 4
1 2
2 3
3 4
4 1
NO
题面与样例版权归 Codeforces 及出题人所有;中文翻译由 AI 生成(CI 管线),如有出入请以原文为准。