#include <bits/stdc++.h>
#define pb push_back
#define pii pair<int,int>
#define fi first
#define int long long
#define se second
#define ios ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#define TXT "color3"
#define endl cout<<"\n";
#define freo if(fopen(TXT".inp","r")){freopen(TXT".inp","r",stdin); freopen(TXT".out","w",stdout);} ///TEMPLATE MADE BY NIETTRAAN
using namespace std;
const int MXN = 1005;
vector<int> adj[MXN];
string orig, res;
int n, m;
bool vis[MXN];
vector<int> comp;
bool bfs_component(int start) {
comp.clear();
queue<int> q;
q.push(start);
vis[start] = 1;
comp.pb(start);
while(!q.empty()) {
int u = q.front(); q.pop();
for(int v : adj[u]) {
if(!vis[v]) {
vis[v] = 1;
q.push(v);
comp.pb(v);
}
}
}
// thử 3 màu gốc
for(char startColor : {'R','G','B'}) {
if (startColor == orig[start]) continue; // phải khác màu cũ
map<int,char> color;
queue<int> qq;
qq.push(start);
color[start] = startColor;
bool ok = true;
while(!qq.empty() && ok) {
int u = qq.front(); qq.pop();
for(int v : adj[u]) {
if(color.count(v)) {
if(color[v] == color[u]) {ok=false; break;}
} else {
// tìm màu cho v khác color[u] và khác orig[v]
bool found = false;
for(char c : {'R','G','B'}) {
if(c != color[u] && c != orig[v]) {
color[v] = c;
found = true;
break;
}
}
if(!found){ok=false; break;}
qq.push(v);
}
}
}
if(ok) {
for(auto &x : color) res[x.fi] = x.se;
return true;
}
}
return false;
}
void solve() {
cin >> n >> m;
cin >> orig;
orig = " " + orig;
res.resize(n+1,' ');
for(int i=1;i<=m;i++){
int u,v;cin>>u>>v;
adj[u].pb(v);
adj[v].pb(u);
}
for(int i=1;i<=n;i++){
if(!vis[i]){
if(!bfs_component(i)){
cout << "Impossible\n";
return;
}
}
}
for(int i=1;i<=n;i++) cout << res[i];
cout << "\n";
}
int32_t main(){
ios;
freo;
solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgcGlpIHBhaXI8aW50LGludD4KI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIGludCBsb25nIGxvbmcKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBpb3MgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IGNpbi50aWUoTlVMTCk7IGNvdXQudGllKE5VTEwpOwojZGVmaW5lIFRYVCAiY29sb3IzIgojZGVmaW5lIGVuZGwgY291dDw8IlxuIjsKI2RlZmluZSBmcmVvIGlmKGZvcGVuKFRYVCIuaW5wIiwiciIpKXtmcmVvcGVuKFRYVCIuaW5wIiwiciIsc3RkaW4pOyBmcmVvcGVuKFRYVCIub3V0IiwidyIsc3Rkb3V0KTt9ICAgICAgICAgICAgIC8vL1RFTVBMQVRFIE1BREUgQlkgTklFVFRSQUFOCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgTVhOID0gMTAwNTsKdmVjdG9yPGludD4gYWRqW01YTl07CnN0cmluZyBvcmlnLCByZXM7CmludCBuLCBtOwpib29sIHZpc1tNWE5dOwoKdmVjdG9yPGludD4gY29tcDsKCmJvb2wgYmZzX2NvbXBvbmVudChpbnQgc3RhcnQpIHsKICAgIGNvbXAuY2xlYXIoKTsKICAgIHF1ZXVlPGludD4gcTsKICAgIHEucHVzaChzdGFydCk7CiAgICB2aXNbc3RhcnRdID0gMTsKICAgIGNvbXAucGIoc3RhcnQpOwogICAgd2hpbGUoIXEuZW1wdHkoKSkgewogICAgICAgIGludCB1ID0gcS5mcm9udCgpOyBxLnBvcCgpOwogICAgICAgIGZvcihpbnQgdiA6IGFkalt1XSkgewogICAgICAgICAgICBpZighdmlzW3ZdKSB7CiAgICAgICAgICAgICAgICB2aXNbdl0gPSAxOwogICAgICAgICAgICAgICAgcS5wdXNoKHYpOwogICAgICAgICAgICAgICAgY29tcC5wYih2KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvLyB0aOG7rSAzIG3DoHUgZ+G7kWMKICAgIGZvcihjaGFyIHN0YXJ0Q29sb3IgOiB7J1InLCdHJywnQid9KSB7CiAgICAgICAgaWYgKHN0YXJ0Q29sb3IgPT0gb3JpZ1tzdGFydF0pIGNvbnRpbnVlOyAvLyBwaOG6o2kga2jDoWMgbcOgdSBjxakKICAgICAgICBtYXA8aW50LGNoYXI+IGNvbG9yOwogICAgICAgIHF1ZXVlPGludD4gcXE7CiAgICAgICAgcXEucHVzaChzdGFydCk7CiAgICAgICAgY29sb3Jbc3RhcnRdID0gc3RhcnRDb2xvcjsKCiAgICAgICAgYm9vbCBvayA9IHRydWU7CiAgICAgICAgd2hpbGUoIXFxLmVtcHR5KCkgJiYgb2spIHsKICAgICAgICAgICAgaW50IHUgPSBxcS5mcm9udCgpOyBxcS5wb3AoKTsKICAgICAgICAgICAgZm9yKGludCB2IDogYWRqW3VdKSB7CiAgICAgICAgICAgICAgICBpZihjb2xvci5jb3VudCh2KSkgewogICAgICAgICAgICAgICAgICAgIGlmKGNvbG9yW3ZdID09IGNvbG9yW3VdKSB7b2s9ZmFsc2U7IGJyZWFrO30KICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgLy8gdMOsbSBtw6B1IGNobyB2IGtow6FjIGNvbG9yW3VdIHbDoCBraMOhYyBvcmlnW3ZdCiAgICAgICAgICAgICAgICAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIGZvcihjaGFyIGMgOiB7J1InLCdHJywnQid9KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGMgIT0gY29sb3JbdV0gJiYgYyAhPSBvcmlnW3ZdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvclt2XSA9IGM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZighZm91bmQpe29rPWZhbHNlOyBicmVhazt9CiAgICAgICAgICAgICAgICAgICAgcXEucHVzaCh2KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYob2spIHsKICAgICAgICAgICAgZm9yKGF1dG8gJnggOiBjb2xvcikgcmVzW3guZmldID0geC5zZTsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIGZhbHNlOwp9Cgp2b2lkIHNvbHZlKCkgewogICAgY2luID4+IG4gPj4gbTsKICAgIGNpbiA+PiBvcmlnOwogICAgb3JpZyA9ICIgIiArIG9yaWc7CiAgICByZXMucmVzaXplKG4rMSwnICcpOwogICAgZm9yKGludCBpPTE7aTw9bTtpKyspewogICAgICAgIGludCB1LHY7Y2luPj51Pj52OwogICAgICAgIGFkalt1XS5wYih2KTsKICAgICAgICBhZGpbdl0ucGIodSk7CiAgICB9CgogICAgZm9yKGludCBpPTE7aTw9bjtpKyspewogICAgICAgIGlmKCF2aXNbaV0pewogICAgICAgICAgICBpZighYmZzX2NvbXBvbmVudChpKSl7CiAgICAgICAgICAgICAgICBjb3V0IDw8ICJJbXBvc3NpYmxlXG4iOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGZvcihpbnQgaT0xO2k8PW47aSsrKSBjb3V0IDw8IHJlc1tpXTsKICAgIGNvdXQgPDwgIlxuIjsKfQoKaW50MzJfdCBtYWluKCl7CiAgICBpb3M7CiAgICBmcmVvOwogICAgc29sdmUoKTsKICAgIHJldHVybiAwOwp9Cg==