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: Runtime Error)

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef vector<ll> vi;
typedef pair<ll,ll> pi;
typedef vector<pi> vpi;
typedef long double ld;
#define pb emplace_back
#define mp make_pair
#define lb lower_bound
#define ub upper_bound
#define ALL(x) x.begin(), x.end()
#define SZ(x) (ll)x.size()
#define f first
#define s second
#define MAXN 2510
int OFF;

int ans[MAXN][MAXN];
int N,M,D,p;
queue<pair<pi, int>> Q;
vector<pair<pi,int>> V;
char mk[5] = {'A', 'R','Y','G','B'};

int main(){
	ios_base::sync_with_stdio(0);cin.tie(0);
	cin>>N>>M>>D;

	if (D%2 == 1){
		p = (D+1)/2;
		Q.push(mp(mp(p+D,1+D), 1));
		Q.push(mp(mp(1+D,p+1+D), 2));
		Q.push(mp(mp(p+1+D,D+1+D), 3));
		Q.push(mp(mp(D+1+D,p+D), 4));
		int dx[] = {D+1,-D+1,-(D+1),-(-D+1)};
		int dy[] = {D-1,D+1,-(D-1), -(D+1)};
		ans[p+D][1+D] = 1;
		ans[1+D][D+p+1] = 2;
		ans[p+1+D][D+1+D] = 3;
		ans[D+1+D][p+D] = 4;
		while (SZ(Q)){
			pi cur = Q.front().f;
			int in = Q.front().s;
			V.pb(Q.front());
			Q.pop();
			// cout<<cur.f<<' '<<cur.s<<' '<<in<<'\n';
			for (int i=0;i<4;++i){
				int cx = cur.f + dx[i];
				int cy = cur.s + dy[i];
				if (cx <= 0 || cy <= 0 || cx > N+2*D || cy > M+2*D)continue;
				if (ans[cx][cy])continue;
				ans[cur.f][cur.s] = in;
				Q.push(mp(mp(cx,cy), in));
			}
		}

		for (auto i : V){
			pi t = i.f;
			int in = i.s;
			// cout<<"Trying "<<t.f<<' '<<t.s<<'\n';
			for (int j=1-p;j<=p-1;++j){
				for (int k=1-p+abs(j); k<= p-1-abs(j);++k){
					int cx = t.f + j;
					int cy = t.s + k;
					// cout<<j<<' '<<k<<'\n';
					if (cx <= D || cy <= D || cx > N+D || cy > M+D)continue;
					ans[cx][cy] = in;
				}
			}
			// for (int i=1;i<=N;++i){
			// 	for (int j=1;j<=M;++j)cout<<ans[i][j];
			// 	cout<<'\n';
			// }
			// cout<<'\n';
			// return 0;
			// break;
		}
		for (int i=1;i<=N;++i){
			for (int j=1;j<=M;++j)cout<<mk[ans[i+D][j+D]];
			cout<<'\n';
		}
		
	}else {
		assert(0);
	}
}