#include<bits/stdc++.h>
using namespace std;
int w[8],h[8],x1[15],x2[15],f=0;
char m[8][8],ans[8][8];
void fs(int n=0){
  if(f)return;
  if(n==8){
    f=1;
    for(int i=0;i<8;i++)
      for(int j=0;j<8;j++)
	ans[i][j]=m[i][j];
    return;
  }
  if(h[n]==1)fs(n+1);
  else{
    for(int i=0;i<8;i++){
      if(w[i]+x1[7+i-n]+x2[n+i]==0){
	m[n][i]='Q';
	w[i]=x1[7+i-n]=x2[n+i]=1;
	fs(n+1);
	m[n][i]='.';
	w[i]=x1[7+i-n]=x2[n+i]=0;
      }
    }
  }
}

int main(){

  for(int i=0;i<8;i++)
    for(int j=0;j<8;j++)
      m[i][j]='.';
  
  int n,a,b;
  
  cin>>n;
  for(int i=0;i<n;i++){
    cin>>a>>b;
    m[a][b]='Q';
    h[a]=w[b]=1;
    x1[7+b-a]=1;
    x2[a+b]=1;
  }
  
  fs();
  
  for(int i=0;i<8;i++){
    for(int j=0;j<8;j++)
      cout<<ans[i][j];
    cout<<endl;
  }
  
  return 0;
}
#include <iostream>
#include <cstdio>
#include <climits>
#include <cmath>
#include <cassert>
#include <algorithm>
#include <utility>
#include <vector>
#include <string>
#include <stack>
#include <queue>
#define MAX 10000
#define INFTY 1<<30 // 2^30
#define N 8
using namespace std;
typedef long long llong;
static const int NIL = -1;
static const int WHITE = 0;
static const int GRAY = 1;
static const int BLACK = 2;

static const int NOT_FREE = 0;
static const int FREE = 1;
static const int FIXED = 2;

bool X[N][N];
vector<pair<int, int> > ans;

void init()
{
  for(int i = 0; i < N; i++)
    for(int j = 0; j < N; j++)
      X[i][j] = false;
}

bool can_pos(int x, int y)
{
  for(int i = 0; i < ans.size(); i++)
  {
    int tx = ans[i].first;
    int ty = ans[i].second;
    if(x == tx) return false;
    if(y == ty) return false;
    if((x-tx)*(x-tx) == (y-ty)*(y-ty)) return false;
  }
  return true;
}

void printBoard()
{
  for(int i = 0; i < ans.size(); i++)
    X[ans[i].first][ans[i].second] = true;
  for(int i = 0; i < N; i++)
  {
    for(int j = 0; j < N; j++)
      cout << (X[i][j] ? "Q" : ".");
    cout << endl;
  }
}

bool recursive(int p)
{
  for(; p < N * N; p++)
  {
    int i = p%N;
    int j = p/N;
    if(!(can_pos(i,j))) continue;
    pair<int, int>tmp = make_pair(i, j);
    ans.push_back(tmp);
    if(!recursive((j+1)*N)) ans.pop_back();
  }
  if(ans.size() == N) return true;
  return false;
}

int main()
{
  init();
  int k, r, c; cin >> k;
  for(int i = 0; i < k; i++)
  {
    cin >> r >> c;
    pair<int, int> tmp = make_pair(r, c);
    ans.push_back(tmp);
  }
  if(recursive(0)) printBoard();
  return 0;
}