import sys from operator import itemgetter, le from collections import defaultdict, deque import heapq from heapq import heapify, heappop, _heapify_max, heappush from bisect import bisect_left, bisect_right import math import itertools import copy stdin=sys.stdin #sys.setrecursionlimit(10 ** 7) ## import pypyjit ## pypyjit.set_param('max_unroll_recursion=-1') ip=lambda: int(sp()) fp=lambda: float(sp()) lp=lambda:list(map(int,stdin.readline().split())) sp=lambda:stdin.readline().rstrip() Yp=lambda:print('Yes') Np=lambda:print('No') inf = 1 << 60 mod = 10 ** 9 + 7 mod = 998244353 eps = 1e-9 sortkey1 = itemgetter(0) sortkey2 = lambda x: (x[0], x[1]) ############################################################### N, K = lp() A = [] col = [-1 for _ in range(N)] RGB = 'RGB' for _ in range(K): a, c = input().split() a = int(a) - 1;c = RGB.index(c) col[a] = c A.append((a,c)) A.sort(reverse=True) rgb = [0 for _ in range(3)] idx = N ans = [-1 for _ in range(N)] for i in range(N - 1, - 1, -1): if col[i] == -1: if ans[i] != -1: rgb[ans[i]] -= 1 continue c = col[i] need = (i + 1) // 3 + 1 r = min(i, idx) + 1 if need - rgb[c] > r: print(-1) exit() t = 0 use = need - rgb[c] for j in range(r, -1, -1): if t == use: break ans[r] = c rgb[c] += 1 t += 1 r -= 1 #print(ans) answer = [] for x in ans: answer.append(RGB[x]) print(''.join(answer))