import std.stdio, std.array, std.string, std.conv, std.algorithm;
import std.typecons, std.range, std.random, std.math, std.container;
import std.numeric, std.bigint, core.bitop;


void main() {
    auto s = readln.split.map!(to!int);
    auto H = s[0];
    auto W = s[1];
    auto D = s[2];

    auto used = new bool[][](H, W);
    auto color = new int[][][](H, W);
    foreach (i; 0..H) foreach (j; 0..W) color[i][j] = [1, 2, 3, 4];
    auto pq = new BinaryHeap!(Array!(Tuple!(int[], int, int)), (a, b) => a[0].length > b[0].length);
    foreach (i; 0..H) foreach (j; 0..W) pq.insert(tuple([1, 2, 3, 4], i, j));


    while (!pq.empty) {
        auto t = pq.front; pq.removeFront;
        auto r = t[1];
        auto c = t[2];
        if (used[r][c] || color[r][c] != t[0]) continue;
        used[r][c] = true;
        auto cl = t[0];
        color[r][c] = [cl[0]];

        foreach (i; [-D, D]) {
            foreach (j; [-1, 1]) {
                auto nr = r + i;
                auto nc = c + (D - abs(i)) * j;
                if (nr < 0 || nc < 0 || nr >= H || nc >= W)
                    continue;
                int pos = -1;
                foreach (k; 0..color[nr][nc].length.to!int) if (color[nr][nc][k] == cl[0]) pos = k;
                if (pos != -1) color[nr][nc].remove(pos);
                pq.insert(tuple(color[nr][nc].dup, nr, nc));
            }
        }
    }

    auto C = " RYGB";
    foreach (i; 0..H) {
        foreach (j; 0..W) C[color[i][j][0]].write;
        writeln;
    }
}
