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<cmath>
#include<algorithm>
#include<vector>
#include<set>
#include<queue>
#include<map>
#include<cstring>
#include<string>
#include<bitset>
#include<iomanip>
using namespace std;
#define ri register int
#define il inline
#define pb push_back
#define LL long long
#define pairint pair<int,int>
#define fi first
#define se second
#define mp make_pair

namespace i207M
{

template<class T>il void in(T &x)
{
    x=0; bool f=0; char c=getchar();
    while(c<'0'||c>'9')
    {
        if(c=='-') f=1;
        c=getchar();
    }
    while(c>='0'&&c<='9') x=x*10+(c^'0'),c=getchar();
    if(f) x=-x;
}

#define N 100005
int v[N<<1],nx[N<<1];
int head[N],cnte=1;
il void adde(int uu,int vv)
{
	v[++cnte]=vv,nx[cnte]=head[uu],head[uu]=cnte;
}
int n,m;
int c[N];
int d[N];
int ve[N];
bool chs[N];
bool vis[N];
int dep[N];
int fa[N][17]; // max 2^16
bool q=1;
void dfs(int x,int f)
{
//	printf("V %d %d\n",x,f);
	vis[x]=1;
	if(q)
	{
		dep[x]=dep[f]+1;
		fa[x][0]=f;
		for(ri i=1;i<=16&&fa[x][i-1];++i)
			fa[x][i]=fa[fa[x][i-1]][i-1];
	}
	for(ri i=head[x];i;i=nx[i])
		if(!vis[v[i]])
		{
			chs[i>>1]=1;
			dfs(v[i],x);
			if(d[v[i]]!=c[v[i]])
			{
				ve[i>>1]=c[v[i]]-d[v[i]];
				d[x]+=ve[i>>1];
				d[v[i]]+=ve[i>>1];
			}
		}
}
il void gun()
{
	puts("NO");
	exit(0);
}
il void done()
{
	puts("YES");
	for(ri i=1;i<=m;++i) printf("%d\n",ve[i]);
	exit(0);
}
int lca(int x,int y)
{
	if(dep[x]<dep[y]) swap(x,y);
	for(ri i=16;i>=0;--i)
		if(dep[fa[x][i]]>=dep[y]) x=fa[x][i];
	if(x==y) return x;
	for(ri i=16;i>=0;--i)
		if(fa[x][i]!=fa[y][i]) x=fa[x][i],y=fa[y][i];
	return fa[x][0];
}
signed main()
{
#ifdef M207
	freopen("in.in","r",stdin);
#endif
	in(n),in(m);
	for(ri i=1;i<=n;++i) in(c[i]);
	for(ri i=1,a,b;i<=m;++i)
	{
		in(a),in(b);
		adde(a,b);
		adde(b,a);
	}
	dfs(1,0);
	if(d[1]==c[1]) done();
	else if((d[1]-c[1])&1) gun();
//	cout<<"A";
//	for(ri i=1;i<=n;++i) printf("N %d %d %d\n",i,c[i],d[i]);
//	for(ri i=1;i<=m;++i) if(chs[i]) printf("E %d %d %d\n",v[i<<1],v[i<<1|1],ve[i]);
	for(ri i=1;i<=m;++i)
		if(!chs[i])
		{
			int uu=v[i<<1|1],vv=v[i<<1],f=lca(uu,vv);
			if(dep[uu]<dep[vv]) swap(uu,vv);
			int len=dep[uu]+dep[vv]-(dep[f]<<1)+1;
//			printf("Q %d %d %d %d\n",uu,vv,lca(uu,vv),len);
			if(len&1)
			{
				if(vv==f) ve[i]-=(c[1]-d[1])/2;
				else ve[i]+=(c[1]-d[1])/2;
				c[uu]-=ve[i],c[vv]-=ve[i];
				q=0; memset(d,0,sizeof d);
				memset(vis,0,sizeof vis);
				dfs(1,0);
				done();
			}
		}
	gun();
    return 0;
}




}

signed main()
{
    i207M::main();
    return 0;
}