2 1
1 1
2 1
 8 12
-6 2 -3 2 6 -7 1 -5
2 1
5 6
1 6
1 4
8 2
2 7
2 5
8 3
8 4
3 7
7 6
3 1
 10 13
3 4 -3 8 6 4 -5 1 3 -7
9 5
9 2
10 3
1 4
3 5
9 1
6 10
10 4
3 1
2 7
1 6
1 7
7 8
 43 52
-23 -18 -35 21 -12 38 -35 -11 28 -20 27 -5 9 -19 -39 -25 -32 32 -36 28 11 37 1 -25 -22 9 -15 21 25 -39 10 36 -30 -40 22 26 25 -27 -22 -38 -1 18 -13
33 40
31 23
30 26
21 17
6 2
41 19
32 39
32 23
13 14
25 35
31 30
19 32
25 22
34 36
7 40
23 6
40 12
1 3
23 43
36 13
18 33
17 32
7 3
21 34
41 35
20 7
23 1
41 8
25 19
20 29
42 5
40 21
9 37
17 41
30 10
41 18
39 1
20 24
20 4
42 3
20 25
5 16
31 9
42 28
10 11
19 42
31 38
25 2
31 27
17 25
13 15
31 20
 2 1
1 1
1 2
 5 7
4 1 5 3 -1
2 4
5 4
5 2
1 5
1 2
4 1
1 3
 10 12
5 1 1 8 -8 10 -3 -2 1 7
5 3
8 2
10 9
4 6
5 6
4 5
5 10
4 7
8 4
3 1
3 6
6 10
 20 40
-9 -10 -9 15 -3 -5 -17 -10 -6 2 -13 19 10 -15 15 -14 17 0 7 -8
3 17
6 18
15 12
2 5
18 3
16 20
6 17
20 10
10 18
9 12
15 3
6 4
15 16
20 6
20 9
9 4
4 8
14 5
11 7
12 11
3 13
14 19
7 17
16 14
19 7
12 13
14 13
13 11
9 14
13 17
8 19
5 20
2 17
2 16
12 5
8 1
20 3
6 2
5 18
13 8

YES
                                                               1
 NO
 YES
                                                              -7
                                                              10
                                                             -16
                                                               3
                                                              13
                                                               0
                                                               4
                                                               5
                                                               0
                                                              -6
                                                               0
                                                               0
                                                               1
 NO
 YES
                                                               1
 YES
                                                               2
                                                               1
                                                              -1
                                                              -1
                                                               0
                                                               0
                                                               5
 YES
-4
1
1
17
-7
-3
6
-3
-3
5
0
0
 YES
                                                             -30
                                                             -21
                                                             -23
                                                             -10
                                                              21
                                                             -52
                                                               0
                                                               2
                                                               0
                                                              -9
                                                               0
                                                              16
                                                              38
                                                               0
                                                              42
                                                               0
                                                              -1
                                                               7
                                                             -64
                                                              51
                                                               0
                                                               7
                                                              47
                                                               0
                                                               0
                                                               0
                                                              10
                                                               0
                                                             -39
                                                               0
                                                               0
                                                               0
                                                               0
                                                               0
                                                               0
                                                              -9
                                                               0
                                                               0
                                                               0
                                                               0

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>

using namespace std;
#define MAXN 100000
#define ll long long
#define Trav(p) for(rint u = first[p], v; ~u; u = e[u].nex)
#define rint register int
#define gc() getchar()
inline int read(rint ans = 0, rint sgn = ' ', rint ch = gc())
{
	for(; ch < '0' || ch > '9'; sgn = ch, ch = gc());
	for(; ch >='0' && ch <='9';(ans*=10)+=ch-'0', ch = gc());
	return sgn-'-'?ans:-ans;
}
#define BUF_SIZE 1000000
#define _END fwrite(_Ob,1,_O-_Ob,stdout), _O = _Ob
#define Outc(a) (*_O++ = a)
char _Ob[BUF_SIZE+5], *_O = _Ob, _Os[25], *_Ot;
template <typename T> inline void Out(T x)
{
	if(!x){Outc('0'); return;} if(x < 0) Outc('-'), x = -x;
	for(_Ot = _Os; x; *_Ot++ = x%10+'0', x /= 10);
	for(; _Ot != _Os; Outc(*--_Ot)); if(_O-_Ob >= BUF_SIZE-50) _END;
}
int first[MAXN+5], fa[MAXN+5], fe[MAXN+5], dep[MAXN+5], tot, n, m; ll c[MAXN+5], w[MAXN+5]; bool book[MAXN+5], tree[MAXN+5], s[2];
struct Edge{int to,nex; ll w; Edge(){} Edge(int _to, int _nex, ll _w){to=_to,nex=_nex,w=_w;}}e[(MAXN<<1)+5];
inline void Add(int a, int b){e[tot] = Edge(b,first[a],0), first[a] = tot++, e[tot] = Edge(a,first[b],0), first[b] = tot++;}
inline int LCA(int a, int b){for(; a-b; dep[a]<dep[b]?a^=b^=a^=b:0, a = fa[a]); return a;}
void DFS(int p){book[p] = true; Trav(p) if(!book[v=e[u].to]) fa[v] = p, fe[v] = u, dep[v] = dep[p]+1, DFS(v), tree[u] = tree[u^1] = true, e[u].w = e[u^1].w = w[v], w[v] = 0, w[p] -= e[u].w;}
struct F{ll k,b; F(){} F(ll _k, ll _b){k=_k,b=_b;} inline F operator + (F f){return F(k+f.k,b+f.b);} inline F operator - (F f){return F(k-f.k,b-f.b);}}f[MAXN+5];
void Solve(int edge)
{
	static int C[MAXN+5], E[MAXN+5], top, u, v; u = e[edge].to, v = e[edge^1].to, dep[u]>dep[v] ? u ^= v ^= u ^= v : 0;
	/*if(s[(dep[u]^dep[v])&1]) return; */s[(dep[u]^dep[v])&1] = true, memset(book+1,0,n), memcpy(w+1,c+1,n<<3), top = 0;
	for(rint i = 0; i < tot; e[i].w = e[i^1].w = tree[i] = tree[i^1] = 0, i += 2);
	for(rint p = v; p != u; C[++top] = p, E[top] = fe[p], p = fa[p]); C[++top] = u, E[top] = edge, E[0] = E[top];
	for(rint i = 1; i <= top; book[C[i]] = true, i++); for(rint i = 1; i <= top; DFS(C[i]), i++);
	f[0] = F(1,0); for(rint i = 1; i <= top; f[i] = F(0,w[C[i]])-f[i-1], i++);
	if(f[top].k==1&&f[top].b) return;//Outc('N'), Outc('O'), Outc('\n'), _END, exit(0);
	else e[edge].w = e[edge^1].w = f[top].b/(1-f[top].k); for(rint i = 1; i < top; e[E[i]].w = e[E[i]^1].w = f[i].k*e[edge].w+f[i].b, i++);
	Outc('Y'), Outc('E'), Outc('S'), Outc('\n'); for(rint i = 0; i < tot; Out(e[i].w), Outc('\n'), i += 2); _END; exit(0);
}
int main()
{
	n = read(), m = read(), memset(first+1,-1,n<<2); for(rint i = 1; i <= n; c[i] = read(), i++);
	for(rint i = 1; i <= m; Add(read(),read()), i++); memcpy(w+1,c+1,n<<3), DFS(1);
	if(!w[1]){Outc('Y'), Outc('E'), Outc('S'), Outc('\n'); for(rint i = 0; i < tot; Out(e[i].w), Outc('\n'), i += 2); _END; return 0;}
	for(rint i = 0; i < tot; !tree[i] ? Solve(i),0 : 0, i += 2); Outc('N'), Outc('O'), Outc('\n'), _END; return 0;
}
/*
10 12
5 1 1 8 -8 10 -3 -2 1 7
5 3
8 2
10 9
4 6
5 6
4 5
5 10
4 7
8 4
3 1
3 6
6 10

*/