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 = [] RGB = 'RGB' for _ in range(K): a, c = input().split() a = int(a) - 1;c = RGB.index(c) A.append((a,c)) A.sort() rgb = [0 for _ in range(3)] idx = -1 ans = [] for a, c in A: need = (a + 1) // 3 + 1 if a - idx + rgb[c] < need: print(-1) exit() for _ in range(need - rgb[c]): ans.append(c) idx += 1 rgb[c] = need answer = [] for x in ans: answer.append(RGB[x]) l = N - len(answer) for _ in range(l): answer.append('B') print(''.join(answer))