#include <cstdio>
#include <cmath>
#include <vector>
#include <algorithm>
#include <array>
#include <set>
#include <map>
#include <queue>
#include <tuple>
#include <unordered_set>
#include <unordered_map>
#include <functional>
#include <cassert>
#define repeat(i, n) for (int i = 0; (i) < int(n); ++(i))
#define repeat_from(i, m, n) for (int i = (m); (i) < int(n); ++(i))
#define repeat_reverse(i, n) for (int i = (n)-1; (i) >= 0; --(i))
#define repeat_from_reverse(i, m, n) for (int i = (n)-1; (i) >= int(m); --(i))
#define whole(x) begin(x), end(x)
#define unittest_name_helper(counter) unittest_ ## counter
#define unittest_name(counter) unittest_name_helper(counter)
#define unittest __attribute__((constructor)) void unittest_name(__COUNTER__) ()
using ll = long long;
using namespace std;
template <class T> inline void setmax(T & a, T const & b) { a = max(a, b); }
template <class T> inline void setmin(T & a, T const & b) { a = min(a, b); }
template <typename X, typename T> auto vectors(X x, T a) { return vector<T>(x, a); }
template <typename X, typename Y, typename Z, typename... Zs> auto vectors(X x, Y y, Z z, Zs... zs) { auto cont = vectors(y, z, zs...); return vector<decltype(cont)>(x, cont); }
const int dy[] = { -1, 1, 0, 0 };
const int dx[] = { 0, 0, 1, -1 };
bool is_on_field(int y, int x, int h, int w) { return 0 <= y and y < h and 0 <= x and x < w; }

// RRRRRRYYYYYYRRRRRRYYYYYYRRRRRRYYYYYYRRRRRRYYYYYYRRRRRRYYYYYYRRRRRRYYYYYYRRRRRRYY
// YRRRRGGYYYYBBRRRRGGYYYYBBRRRRGGYYYYBBRRRRGGYYYYBBRRRRGGYYYYBBRRRRGGYYYYBBRRRRYYY
// YYRRGGGGYYBBBBRRGGGGYYBBBBRRGGGGYYBBBBRRGGGGYYBBBBRRGGGGYYBBBBRRGGGGYYBBBBRRYYYY
// YYYGGGGGGBBBBBBGGGGGGBBBBBBGGGGGGBBBBBBGGGGGGBBBBBBGGGGGGBBBBBBGGGGGGBBBBBBGGYYY
// YYYBGGGGRRBBBBYYGGGGRRBBBBYYGGGGRRBBBBYYGGGGRRBBBBYYGGGGRRBBBBYYGGGGRRBBBBGGGGYY
// YYBBBGGRRRRBBYYYYGGRRRRBBYYYYGGRRRRBBYYYYGGRRRRBBYYYYGGRRRRBBYYYYGGRRRRBBGGGGGGR
// YBBBBBRRRRRRYYYYYYRRRRRRYYYYYYRRRRRRYYYYYYRRRRRRYYYYYYRRRRRRYYYYYYRRRRRRYYGGGGRR
// RBBBBBYRRRRGGYYYYBBRRRRGGYYYYBBRRRRGGYYYYBBRRRRGGYYYYBBRRRRGGYYYYBBRRRRYYYYGGRRR

vector<vector<char> > solve(int h, int w, int d) {
    w = max(2 * h, w);
    auto f = vectors(h, w, char());
    if (d % 2 == 1) {
        repeat (y, h) repeat (x, w) {
            f[y][x] = (y + x) % 4 + 1;
        }
    } else {
        int k1 = d;
        int k2 = 0;
        int k3 = d;
        int k4 = 0;
        int dir = + 1;
        repeat (y, h) {
            string s = dir > 0 ?
                string(k1, '\x01') + string(k2, '\x02') + string(k3, '\x03') + string(k4, '\x04') :
                string(k2, '\x02') + string(k1, '\x01') + string(k4, '\x04') + string(k3, '\x03') ;
            repeat (x, w) {
                f[y][x] = s[((- y + x) % (2 * d) + 2 * d) % (2 * d)];
            }
            if (k1 - dir * 2 < 0 or k2 + dir * 2 < 0) dir *= -1;
            k1 -= dir * 2;
            k2 += dir * 2;
            k3 -= dir * 2;
            k4 += dir * 2;
        }
    }
    return f;
}

int main() {
    // input
    int h, w, d; scanf("%d%d%d", &h, &w, &d);

    // solve
    auto f = solve(h, w, d);

    // output
    repeat (y, h) {
        repeat (x, w) {
            printf("%c", ".RYGB"[f[y][x]]);
        }
        printf("\n");
    }
    return 0;
}


Measured memory_bytes: 1024