#include using namespace std; #include using namespace atcoder; #pragma GCC target("avx") #pragma GCC optimize("O3") #pragma GCC optimize("unroll-loops") using ll = long long; using mint = modint998244353; int main() { int N, M; cin >> N >> M; bool no = false; vector>> G(N); for(int i = 0; i < M; i++) { int u, v; cin >> u >> v; if(u == 1 && v == N) no = true; G[u - 1].push_back(make_pair(v - 1, i)); G[v - 1].push_back(make_pair(u - 1, i)); } if(M % 2 == 1 || no) { cout << -1 << "\n"; }else if(G[0].size() > M / 2) { int r = 0, b = 0; string S(M, '?'); unordered_set st; for(const auto [v, i] : G[N - 1]) { st.insert(v); S[i] = 'R'; r++; } for(const auto [v, i] : G[0]) { if(st.count(v)) { S[i] = 'B'; b++; } } for(auto g : G) { for(const auto [v, i] : g) { if(S[i] != '?') continue; if(r < M / 2) S[i] = 'R', r++; else S[i] = 'B', b++; } } cout << S << endl; }else { int r = 0, b = 0; string S(M, '?'); unordered_set st; for(const auto [v, i] : G[0]) { st.insert(v); S[i] = 'R'; r++; } for(const auto [v, i] : G[N - 1]) { if(st.count(v)) { S[i] = 'B'; b++; } } for(auto g : G) { for(const auto [v, i] : g) { if(S[i] != '?') continue; if(r < M / 2) S[i] = 'R', r++; else S[i] = 'B', b++; } } cout << S << endl; } }