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;

int a[1000][1000];
int n,m,k;

void dd(int x,int y,int t,int d)
{
          for(int i=0;i<t;i++)
          {
                    int posx=x+i*2;
                    int posy=y;
                    for(int j=0;j<t-i;j++)
                    {
                              a[posx+j][posy+j]=d;
                              a[posx+j][posy-j]=d;
                    }
          }
}

int d(int x1,int y1,int x2,int y2)
{
          return abs(x1-x2)+abs(y1-y2);
}

int main()
{
          ios_base::sync_with_stdio(0);
          cin>>n>>m>>k;
          for(int i=0;i<1000;i++)
                    for(int j=0;j<1000;j++)
                              a[i][j]=0;
          if(k%2)
          {
                    for(int i=0;i<n;i++)
                              for(int j=0;j<m;j++)
                                        a[i][j]=(i+j)%2;
                    for(int i=0;i<n;i++)
                    {
                              for(int j=0;j<m;j++)
                                        if(a[i][j])
                                                  cout<<"Y";
                                        else
                                                  cout<<"G";
                              cout<<endl;
                    }
                    return 0;
          }
          int pos=0;
          int kilk=k/2;
          while(pos<m)
          {
                    for(int i=0;i<kilk;i++)
                    {
                              a[0][pos]=1;
                              pos+=2;
                    }
                    for(int i=0;i<kilk;i++)
                    {
                              a[0][pos]=3;
                              pos+=2;
                    }
          }

          for(int i=250;i<250+400;i+=k)
                    for(int j=250;j<250+400;j+=k)
                    {
                              int x=(i-250)/k;
                              int y=(j-250)/k;
                              if(x%2==0 && y%2==0)
                                        dd(i,j,k/2,1);
                              if(x%2==1 && y%2==0)
                                        dd(i,j,k/2,3);
                              if(x%2==0 && y%2==1)
                                        dd(i,j,k/2,3);
                              if(x%2==1 && y%2==1)
                                        dd(i,j,k/2,1);
                    }

          for(int i=250+k/2;i<250+400;i+=k)
                    for(int j=250+k/2;j<250+400;j+=k)
                    {
                              int x=(i-250)/k;
                              int y=(j-250)/k;
                              if(x%2==0 && y%2==0)
                                        dd(i,j,k/2,2);
                              if(x%2==1 && y%2==0)
                                        dd(i,j,k/2,4);
                              if(x%2==0 && y%2==1)
                                        dd(i,j,k/2,4);
                              if(x%2==1 && y%2==1)
                                        dd(i,j,k/2,2);
                    }

          for(int i=250;i<250+400;i+=k)
                    for(int j=250;j<250+400;j+=k)
                    {
                              int x=(i-250)/k;
                              int y=(j-250)/k;
                              if(x%2==0 && y%2==0)
                                        dd(i+1,j,k/2,1);
                              if(x%2==1 && y%2==0)
                                        dd(i+1,j,k/2,3);
                              if(x%2==0 && y%2==1)
                                        dd(i+1,j,k/2,3);
                              if(x%2==1 && y%2==1)
                                        dd(i+1,j,k/2,1);
                    }

          for(int i=250+k/2;i<250+400;i+=k)
                    for(int j=250+k/2;j<250+400;j+=k)
                    {
                              int x=(i-250)/k;
                              int y=(j-250)/k;
                              if(x%2==0 && y%2==0)
                                        dd(i+1,j,k/2,2);
                              if(x%2==1 && y%2==0)
                                        dd(i+1,j,k/2,4);
                              if(x%2==0 && y%2==1)
                                        dd(i+1,j,k/2,4);
                              if(x%2==1 && y%2==1)
                                        dd(i+1,j,k/2,2);
                    }



          for(int i=400;i<400+n;i++)
          {
                    for(int j=400;j<400+m;j++)
                    {
                              if(a[i][j]==1)
                                        cout<<'Y';
                              if(a[i][j]==2)
                                        cout<<'R';
                              if(a[i][j]==3)
                                        cout<<'G';
                              if(a[i][j]==4)
                                        cout<<'B';
                    }
                    cout<<endl;
          }

}