#include<bits/stdc++.h>
#define N 100100
#define M 200100
using namespace std;
int d[N];
int id[N];
int c[N];
int ex[M],ey[M],ans[M];
char col[N];
vector<int> g[N];
bool cmp(int i,int j){
	return d[i]<d[j];
}
int main(){
	int n,m;
	bool fail=false;
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++) scanf("%d",&d[i]);
	for(int i=0;i<m;i++){
		scanf("%d%d",&ex[i],&ey[i]);
		g[ex[i]].push_back(i);
		g[ey[i]].push_back(i);
	}
	for(int i=0;i<n;i++) id[i]=i+1;
	sort(id,id+n,cmp);
	for(int i=0;i<n;i++){
		int u=id[i];
		fail=true;
		for(int j=0;j<g[u].size();j++){
			int t=g[u][j];
			int v=ex[t]^ey[t]^u;
			if(d[v]<=d[u]){
				fail=false;
				ans[t]=d[u];
				if(!col[u]){
					if(col[v]=='B') col[u]='W';
					else if(col[v]=='W') col[u]='B';
					else{
						col[u]='B';
						col[v]='W';
					}
				}					
			}
		}
		if(fail) break;
	}
	if(fail) puts("-1");
	else{
		puts(col+1);
		for(int i=0;i<m;i++) printf("%d\n",ans[i]);
	}
	return 0;
}