Problem:
Score : 700 points

Problem Statement

We have a grid with H rows and W columns of squares.
We will represent the square at the i-th row from the top and j-th column from the left as (i,\ j).
Also, we will define the distance between the squares (i_1,\ j_1) and (i_2,\ j_2) as |i_1 - i_2| + |j_1 - j_2|.

Snuke is painting each square in red, yellow, green or blue.
Here, for a given positive integer d, he wants to satisfy the following condition:

No two squares with distance exactly d have the same color.

Find a way to paint the squares satisfying the condition.
It can be shown that a solution always exists.

Constraints

2 ≤ H, W ≤ 500

1 ≤ d ≤ H + W - 2

Input

Input is given from Standard Input in the following format:

H W d

Output

Print a way to paint the squares satisfying the condition, in the following format. If the square (i,\ j) is painted in red, yellow, green or blue, c_{ij} should be R, Y, G or B, respectively.

c_{11}c_{12}...c_{1W}
:
c_{H1}c_{H2}...c_{HW}

Sample Input 1

2 2 1

Sample Output 1

RY
GR

There are four pairs of squares with distance exactly 1.
As shown below, no two such squares have the same color.

(1,\ 1), (1,\ 2) : R, Y

(1,\ 2), (2,\ 2) : Y, R

(2,\ 2), (2,\ 1) : R, G

(2,\ 1), (1,\ 1) : G, R

Sample Input 2

2 3 2

Sample Output 2

RYB
RGB

There are six pairs of squares with distance exactly 2.
As shown below, no two such squares have the same color.

(1,\ 1) , (1,\ 3) : R , B

(1,\ 3) , (2,\ 2) : B , G

(2,\ 2) , (1,\ 1) : G , R

(2,\ 1) , (2,\ 3) : R , B

(2,\ 3) , (1,\ 2) : B , Y

(1,\ 2) , (2,\ 1) : Y , R

Solution in C++14 (GCC 5.4.1) (judge verdict: Accepted)

#include <bits/stdc++.h>
#define ll long long
#define INF 1000000005
#define MOD 1000000007
#define EPS 1e-10
#define rep(i,n) for(int i=0;i<(int)n;++i)
#define each(a,b) for(auto (a): (b))
#define all(v) (v).begin(),(v).end()
#define zip(v) sort(all(v)),v.erase(unique(all(v)),v.end())
#define fi first
#define se second
#define pb push_back
#define show(x) cout<<#x<<" = "<<(x)<<endl
#define spair(p) cout<<#p<<": "<<p.fi<<" "<<p.se<<endl
#define svec(v) cout<<#v<<":";rep(kbrni,v.size())cout<<" "<<v[kbrni];cout<<endl
#define sset(s) cout<<#s<<":";each(kbrni,s)cout<<" "<<kbrni;cout<<endl
#define smap(m) cout<<#m<<":";each(kbrni,m)cout<<" {"<<kbrni.first<<":"<<kbrni.second<<"}";cout<<endl

using namespace std;

typedef pair<int,int>P;

const int MAX_N = 100005;

int main()
{
    cin.tie(0);
    ios::sync_with_stdio(false);
    int h,w,d;
    cin >> h >> w >> d;
    d++;
    int cri = h+w;
    int loop = cri / (d-1) + 1;
    int ln = loop*(d-1);
    vector<vector<int> > vec(ln);
    vector<int> vec1(ln),vec2(ln);
    rep(i,ln/(d-1)){
        if(i % 2 == 0){
            rep(j,d-1){
                vec1[i*(d-1)+j] = 0;
            }
        }else{
            rep(j,d-1){
                vec1[i*(d-1)+j] = 1;
            }
        }
    }
    rep(i,ln/(d-1)){
        if(i % 2 == 0){
            rep(j,d-1){
                vec2[i*(d-1)+j] = 2;
            }
        }else{
            rep(j,d-1){
                vec2[i*(d-1)+j] = 3;
            }
        }
    }
    rep(i,ln/(d-1)){
        if(i % 2 == 0){
            rep(j,d-1){
                vec[i*(d-1)+j] = vec1;
            }
        }else{
            rep(j,d-1){
                vec[i*(d-1)+j] = vec2;
            }
        }
    }
    // rep(i,ln){
    //     rep(j,ln){
    //         cout << vec[i][j];
    //     }
    //     cout << endl;
    // }
    vector<vector<int> > ans(h,vector<int>(w));
    rep(i,h){
        rep(j,w){
            ans[i][j] = vec[i+j][h-1+j-i];
        }
    }
    string ss = "RYGB";
    rep(i,h){
        rep(j,w){
            cout << ss[ans[i][j]];
        }
        cout << endl;
    }
    return 0;
}