N,M=map(int,input().split()) G=[[] for i in range(N+1)] if M%2==1: print(-1) exit() for i in range(M): x,y=map(int,input().split()) if x>y: x,y=y,x if x==1 and y==N: print(-1) exit() G[y].append((x,i)) G[x].append((y,i)) c=0 result=['B']*M used=[False]*(N+1) from collections import deque if len(G[1])<=M//2: used[1]=True S=deque() S.append(1) while S: if c==M//2: break x=S.pop() for B in G[x]: y,pos=B[:] if result[pos]=='R': continue if y==N: continue c+=1 result[pos]='R' if c==M//2: break if used[y]==False: used[y]=True S.append(y) S=deque() S.append(N) p=[False]*(N+1) p[N]=True while S: if c==M//2: break x=S.pop() for B in G[x]: y,pos=B[:] if result[pos]=='R': continue if used[y]==True: continue c+=1 result[pos]='R' if c==M//2: break if p[y]==False: p[y]=True S.append(y) else: used[N]=True S=deque() S.append(N) while S: if c==M//2: break x=S.pop() for B in G[x]: y,pos=B[:] if result[pos]=='R': continue if y==1: continue c+=1 result[pos]='R' if c==M//2: break if used[y]==False: used[y]=True S.append(y) S=deque() S.append(1) p=[False]*(N+1) p[1]=True while S: if c==M//2: break x=S.pop() for B in G[x]: y,pos=B[:] if result[pos]=='R': continue if used[y]==True: continue c+=1 result[pos]='R' if c==M//2: break if p[y]==False: p[y]=True S.append(y) print(*result,sep='')