using System; using static System.Console; using System.Linq; using System.Collections.Generic; class Program { static int NN => int.Parse(ReadLine()); static int[] NList => ReadLine().Split().Select(int.Parse).ToArray(); static int[][] NArr(int n) => Enumerable.Repeat(0, n).Select(_ => NList).ToArray(); static void Main() { var c = NList; var (n, k) = (c[0], c[1]); var list = new char[n]; for (var _ = 0; _ < k; ++_) { var s = ReadLine().Split(); list[int.Parse(s[0]) - 1] = s[1][0]; } var res = new char[n]; var x = new string[] { "RGB", "RBG", "GBR", "GRB", "BRG", "BGR" }; for (var i = 0; i < n; i += 3) { var info = list.Skip(i).Take(3).ToList(); foreach (var xi in x) { if (Fit(info, xi)) { for (var j = 0; j < info.Count; ++j) { res[i + j] = xi[j]; } break; } } } WriteLine(res); } static bool Fit(List info, string x) { var r = false; var g = false; var b = false; if (info[0] == 'R') { if (x[0] != 'R') return false; r = true; } else if (info[0] == 'G') { if (x[0] != 'G') return false; g = true; } else if (info[0] == 'B') { if (x[0] != 'B') return false; b = true; } if (info.Count == 1) return true; if (info[1] == 'R') { if (!r && x[1] != 'R') return false; r = true; } else if (info[1] == 'G') { if (!g && x[1] != 'G') return false; g = true; } else if (info[1] == 'B') { if (!b && x[1] != 'B') return false; b = true; } if (info.Count == 2) return true; if (info[2] == 'R') { if (!r && x[2] != 'R') return false; } else if (info[2] == 'G') { if (!g && x[2] != 'G') return false; } else if (info[2] == 'B') { if (!b && x[2] != 'B') return false; } return true; } }