Iahub likes chess very much. He even invented a new chess piece named Coder. A Coder can move (and attack) one square horizontally or vertically. More precisely, if the Coder is located at position (x, y), he can move to (or attack) positions (x + 1, y), (x–1, y), (x, y + 1) and (x, y–1).

Iahub wants to know how many Coders can be placed on an n × n chessboard, so that no Coder attacks any other Coder.

Input

The first line contains an integer n (1 ≤ n ≤ 1000).

Output

On the first line print an integer, the maximum number of Coders that can be placed on the chessboard.

On each of the next n lines print n characters, describing the configuration of the Coders. For an empty cell print an '.', and for a Coder print a 'C'.

If there are multiple correct answers, you can print any.

Examples

Input

2


Output

2
C.
.C

import java.io.*;
import java.util.*;
import java.*;
import java.math.BigInteger;
import java.util.Random;
 
import javax.naming.BinaryRefAddr;
import java.io.*;
import java.util.*;
import java.lang.*;
 
 
 
public class zad {
private static BufferedReader in;
private static StringTokenizer tok;
private static PrintWriter out;
final static boolean ONLINE_JUDGE = System.getProperty("ONLINE_JUDGE") !=null;
 
public static void init() throws FileNotFoundException{
if(ONLINE_JUDGE){
in = new BufferedReader(new InputStreamReader(System.in));
out = new PrintWriter(System.out);
}
else{
in = new BufferedReader(new FileReader("input.txt"));
out = new PrintWriter("out.txt");
}
}
 
private static String readString() throws IOException {
while (tok == null || !tok.hasMoreTokens()) {
tok = new StringTokenizer(in.readLine());
}
return tok.nextToken();
}
 
private static int readInt() throws IOException {
return Integer.parseInt(readString());
}
private static double readDouble() throws IOException {
return Double.parseDouble(readString());
}
private static long readLong() throws IOException {
return Long.parseLong(readString());
}
private static float readFloat() throws IOException{
    return Float.parseFloat(readString());
}
 
 

static int gcd(int a, int b) {
    while (b != 0) {
            int r = a % b; 
           
            a = b;
            b = r;
    }
 
    return a;
}
 

 
public static void Solve() throws IOException{
 int n = readInt();
 if(n%2==0){
     out.println((n/2)*n);
 }
 else out.println((n/2)*(n/2)+(n-(n/2))*(n/2+1));
 for(int i=0;i<n;i++){
     for(int j=0;j<n;j++){
         if(i%2==0){
     if(j%2==0) out.print('C');
     else out.print('.');
     }
         else{
             if(j%2!=0) out.print('C');
             else out.print('.');
         }
     }
     out.println();
 }
}
    
    
 
public static void main(String[] args) throws IOException {
init();
Solve();
 
 
in.close();
out.close();
}
}