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.util.*;
import java.io.*;

public class Main
{
    static boolean isValid(int x , int y , int n)
    {
        return x >= 0 && y >= 0 && x < n && y < n ;
    }

    public static void main (String [] args) throws Exception
    {
        Scanner sc = new Scanner(System.in);
        PrintWriter out = new PrintWriter(System.out);

        int n = sc.nextInt() ;
        int cnt = 0 ;
        int [] dx  = {0 , 0 , 1 , -1} ;
        int [] dy = {-1 , 1 , 0 , 0 } ;
        char [][] mat = new char[n][n] ;
        for(int i = 0 ; i < n ;i++) Arrays.fill(mat[i] , '.');

        for(int i = 0 ; i < n ;i++)
            for(int j =  0 ; j < n ;j++) {
                boolean can = true ;
                for (int k = 0; k < 4; k++)
                    if (isValid(i + dx[k], j + dy[k], n))
                        can &= mat[i + dx[k]][j + dy[k]] == '.' ;
                if(can){ mat[i][j] = 'C' ; cnt ++ ;}
            }
        out.println(cnt);
        for(int i = 0 ; i < n ;i++)
        {
            for(int j = 0 ; j < n ;j++)out.print(mat[i][j]);
            out.println();
        }
        out.flush();
        out.close();
    }


    static class Scanner
    {
        BufferedReader br;
        StringTokenizer st;

        Scanner(InputStream in)
        {
            br = new BufferedReader(new InputStreamReader(System.in));
        }

        String next() throws Exception
        {
            while (st == null || !st.hasMoreTokens())
                st = new StringTokenizer(br.readLine());
            return st.nextToken();
        }

        int nextInt() throws Exception { return Integer.parseInt(next()); }

        long nextLong() throws Exception { return Long.parseLong(next()); }

        double nextDouble() throws Exception { return Double.parseDouble(next());}
    }

    static void shuffle(int [] a)
    {
        int n =a.length ;

        for(int i = 0 ;i < n ; i++)
        {
            int r = i + (int)(Math.random() * (n - i)) ;
            int tmp = a[i] ;
            a[i] = a[r] ;
            a[r] = tmp ;
        }
    }

}