#include using namespace std; // Template // ============================================== // pbds // #include // #include // using namespace __gnu_pbds; // template> // using ordered_set = tree; // Debugging #ifdef LOCAL #include "debug.h" #else #define debug(...) #define see(x) #endif typedef long long ll; typedef vector VI; typedef vector VLL; typedef vector VB; typedef vector> VVI; typedef pair PI; typedef pair PLL; typedef vector> VPI; #define pb push_back #define ff first #define ss second #define mp make_pair #define all(a) a.begin(), a.end() #define revall(a) a.rbegin(), a.rend() #define loop(i, s, e) for (int i = s; i < e; ++i) #define inp(v) for (auto& x : v) cin >> x #define outp(v) for (int i = 0, n = v.size(); i < n; ++i) cout << v[i] << " \n"[i == n - 1] #define nl "\n" #define yep cout << "YES\n" #define nope cout << "NO\n" #define INF (int) 1e9 #define INFL (ll) 1e18 // #define MOD 998244353 #define MOD 1000000007 #define MAXN 100002 // ============================================= void solve(int tc) { int n, k; cin >> n >> k; vector> c(k); loop(i, 0, k) cin >> c[i].ff >> c[i].ss; sort(revall(c)); vector ans(n, '#'); for (int i = 0; i < n; i += 3) { set s = {'R', 'G', 'B'}; while (!c.empty() && c.back().ff <= i + 3) { if (s.contains(c.back().ss)) ans[c.back().ff - 1] = c.back().ss; s.erase(c.back().ss); c.pop_back(); } loop(j, i, min(i + 3, n)) { if (ans[j] == '#') { ans[j] = *s.begin(); s.erase(s.begin()); } } } loop(i, 0, n) cout << ans[i]; cout << nl; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int t = 1; // cin >> t; int x = t; while(t--) solve(x - t); #ifdef LOCAL cerr << "Execution time: " << 1000.f * clock() / CLOCKS_PER_SEC << " ms." << nl; #endif return 0; }