#include <iostream>
#include <fstream>
#include <sstream>
#include <string.h>
#include <algorithm>
#include <cmath>
#include <assert.h>
#include <stack>
#include <queue>
#include <list>
#include <vector>
#include <map>
#include <set>

//#define DEBUG 1

#define int long long
#define for0(i,n) for (int i=0; i<n; i++)
#define iter(c) for(auto it=c.begin(); it!=c.end(); it++)
#define iter2(c) for(auto it2=c.begin(); it2!=c.end(); it2++)
#define pb push_back
#define ms(a,z) memset(a,z,sizeof(a));
#define mp make_pair
#define X first
#define Y second
#define max(a,b) ((a)>(b)?(a):(b))
#define min(a,b) ((a)<(b)?(a):(b))
#define all(a) a.begin(),a.end()
#define sz(x) (int)(x).size()
#define pmod(x,m) (((x)%(m)+m)%m)
#ifdef int
#define read(x) scanf("%lld",&x);
#else
#define read(x) scanf("%d",&x);
#endif

#ifdef DEBUG
#define nl cout<<"\n";
#define pr(x) cout<<(x)<<" ";
#define prl(x) cout<<#x " = "<<x<<endl;
#define prp(x) cout<<"("<<(x).first<<" "<<(x).second<<") ";
#define printv(v) {for(int _=0; _<sz(v); _++) cout<<v[_]<<" "; cout<<"\n";}
#define printa(a,s) {for (int _=0; _<s; _++) cout<<a[_]<<" "; cout<<"\n";}
#define print2D(a,m,n) {for (int _=0; _<m; _++) {for (int __=0; __<n; __++) cout<<a[_][__]<<" "; cout<<"\n";} cout<<"\n";}
#define debug cout<<"ok at line "<<__LINE__<<endl;
#else
#define nl
#define pr(x)
#define prl(x)
#define prp(x)
#define printv(v)
#define printa(a,s)
#define print2D(a,m,n)
#define debug
#endif

using namespace std;

typedef long long ll;

const int INF = 2147483647;
const long long INFL = 9223372036854775807LL;
const double EPSILON = 0.00000001;
const long long MOD = 1000000007;

char grid[505][505];
int h,w,d;
                            
void place_tile(int x0, int y0, char c) 
{
    //pr("place tile") pr(x0) pr(y0) pr(c) nl
    for (int col=0; col<d; col++) {
        int col_h = min(col+1,d-col);
        for (int row=-col_h; row<=col_h; row++) {
            int x = x0+col, y = y0+row;
            if (0 <= x and x < w and 0 <= y and y < h)
                grid[y][x] = c;
        }
    }
}

int32_t main()
{
    #ifdef DEBUG
    freopen("D.txt","r",stdin);
    //freopen("","w",stdout);
    #endif

    cin >> h >> w >> d;
    if (d%2 == 1) {
        for (int y=0; y<h; y++) {
            for (int x=0; x<w; x++) {
                if ((x+y)%2 == 0)
                    grid[y][x] = 'R';
                else 
                    grid[y][x] = 'G';
            }
        }
    }
    else if (d%4 == 2) {
        for (int y=0; y<h; y++) {
            for (int x=0; x<w; x++) {
                if (y%4 < 2)
                    grid[y][x] = "RGYB"[x%4];
                else 
                    grid[y][x] = "YBRG"[x%4];
            }
        }
    }
    else {
        int y_id=0;
        for (int y=0; y<h+d; y+=d/2) {
            y_id = (y_id+1) %4;
            string chars;
            switch(y_id) {
            case 0: 
                chars = "RG";
                break;
            case 1: 
                chars = "YB";
                break;
            case 2: 
                chars = "GR";
                break;
            case 3: 
                chars = "BY";
                break;
            }            
            int startx = y_id%2 == 0 ? 0 : -d/2;
            
            int x_id = 0;
            for (int x=startx; x<=w+d; x+=d) {
                x_id = (x_id+1)%2;
                char c = chars[x_id];
                place_tile(x,y,c);
            }
        }
    }
    
    for0(y,h) {
        for0(x,w) {
            putchar(grid[y][x]);
        }
        putchar('\n');
    }
    return 0;
}


Measured memory_bytes: 768