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: Wrong Answer)

#include <bits/stdc++.h>
using namespace std;
typedef signed long long ll;

#undef _P
#define _P(...) (void)printf(__VA_ARGS__)
#define FOR(x,to) for(x=0;x<(to);x++)
#define FORR(x,arr) for(auto& x:arr)
#define ITR(x,c) for(__typeof(c.begin()) x=c.begin();x!=c.end();x++)
#define ALL(a) (a.begin()),(a.end())
#define ZERO(a) memset(a,0,sizeof(a))
#define MINUS(a) memset(a,0xff,sizeof(a))
//-------------------------------------------------------

int H,W,D;
int R[1001][1001];
string A="RYGB*";

void dfs(int y,int x,int cur) {
	if(y<0 || y>=H || x<0 || x>=W) return;
	if(R[y][x]!=4) return;
	R[y][x]=cur;
	dfs(y+D,x,cur^2);
	dfs(y-D,x,cur^2);
	dfs(y,x+D,cur^1);
	dfs(y,x-D,cur^1);
}

void solve() {
	int i,j,k,l,r,x,y; string s;
	
	cin>>H>>W>>D;
	
	if(D%2) {
		FOR(y,H) FOR(x,W) R[y][x]=(y+x)%2;
	}
	else if(D%4==2) {
		FOR(y,H) FOR(x,W) R[y][x]=(y%2*2)+(y/2+x/2)%2;
	}
	else {
		FOR(y,H) FOR(x,H) {
			if(D%8==0) {
				int dy=y+x+1000;
				int dx=y-x+1+1000;
				R[y][x]=dy/D%2*2+dx/D%2;
			}
			else {
				int dy=y+x+1000;
				int dx=y-x+1+1000;
				R[y][x]=dy/D%2*2+dx/D%2;
			}
		}
		
	}
	
	
	FOR(y,H) {
		FOR(x,W) cout<<A[R[y][x]];
		cout<<endl;
	}
}


int main(int argc,char** argv){
	string s;int i;
	if(argc==1) ios::sync_with_stdio(false), cin.tie(0);
	FOR(i,argc-1) s+=argv[i+1],s+='\n'; FOR(i,s.size()) ungetc(s[s.size()-1-i],stdin);
	cout.tie(0); solve(); return 0;
}