# DFSは動いていたが、MLEとなった、まあそうだろうね # 逆順で最低値で行けばいいのでは # 入力例1なら at 5, [?, ?, 2]. at 3, [?, 1, ?], at 1 [1, 0, 0] # つなぐのがうまくいかない # 解説より # 前からできるだけイーブンにしていく、そうすれば次のものに対応できる N, K = map(int, input().split()) dic = {} for i in range(K): a, c = map(str, input().split()) if c == 'R': dic[int(a)] = 0 elif c == 'G': dic[int(a)] = 1 elif c == 'B': dic[int(a)] = 2 #print(dic) RGB = [0, 0, 0] ans = '' for i in range(1, N+1): if i in dic: if RGB[dic[i]] == min(RGB): RGB[dic[i]] += 1 ans += 'RGB'[dic[i]] #print(i, 'dic[i]', dic[i]) else: mn_idx = RGB.index(min(RGB)) RGB[mn_idx] += 1 ans += 'RGB'[mn_idx] #print(i, 'mn_idx', mn_idx) else: mn_idx = RGB.index(min(RGB)) RGB[mn_idx] += 1 ans += 'RGB'[mn_idx] #print(i, 'mn_idx', mn_idx) #print(ans) print(ans)