#include<iostream>
using namespace std;
int flag=0;
void dis(char **mat,int n)
{
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            cout<<mat[i][j]<<" ";
        }
        cout<<endl;
    }
}
int check(char **mat,int n,int row,int col)
{
    for(int i=row-1;i>=0;i--)
    {
        if(mat[i][col]=='Q')
        {
            return 0;
        }
    }
    for(int i=row-1,j=col-1;i>=0 && j>=0;i--,j--)
    {
        if(mat[i][j]='Q')
        {
            return 0;
        }
    }
    for(int i=row-1,j=col+1;i>=0 && j<n;i--,j++)
    {
        if(mat[i][j]='Q')
        {
            return 0;
        }
    }
    return 1;
}
int fun(char **mat,int n,int row)
{
    if(n==row)
    {
        dis(mat,n);
        flag=1;
        return;
    }
    for(int col=0;col<n;col++)
    {
        if(check(mat,n,row,col))
        {
            mat[row][col]='Q';
            fun(mat,n,row+1);
            mat[row][col]='.';
        }
    }
}
int main()
{
    int n;
    cin>>n;
    char **mat=new char*[N];
    for(int i=0;i<n;i++)
    {
        mat[i]=new char[n];
    }
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            mat[i][j]='.';
        }
    }
    fun(mat,n,0);
    if(flag==0)
    {
        cout<<"No solution";
    }
}