#include<iostream>
#include<vector>
using namespace std;
int dx[]={0, 0, 1, -1, 1, 1, -1, -1};
int dy[]={1, -1, 0, 0, 1, -1, 1, -1};
const int N=8;
char c[N][N];

bool Mami(){
   int Rev=0;
   int ii, jj;
   for(int i=0; i<N; i++){
      for(int j=0; j<N; j++){
         //cout<< i<<" "<<j<< endl;
         if(c[i][j]=='o'||c[i][j]=='x') continue;
         vector<int> V;
         for(int k=0; k<8; k++){
            int ni=i+dy[k];
            int nj=j+dx[k];
            if(!(0<=ni&&ni<N&&0<=nj&&nj<N)) continue;
            V.push_back(k);
         }
         int rev=0;
         for(int k: V){
            //cout<< k<< endl;
            int ni=i, nj=j;
            while(1){
               ni+=dy[k];
               nj+=dx[k];
               if(!(0<=ni&&ni<N&&0<=nj&&nj<N)) break;
               if(c[ni][nj]=='.') break;
               if(c[ni][nj]=='o'){
                  for(int _i=i+dy[k], _j=j+dx[k]; _i!=ni||_j!=nj; _i+=dy[k], _j+=dx[k]){
                     //cout<< _i<<" "<<_j<< endl;
                     rev++;
                  }
                  break;
               }
            }
         }
         if(rev>Rev){
            ii=i, jj=j;
            Rev=rev;
         }
      }
   }
   //cout<< Rev<< " "<<ii<<" "<<jj<< endl;
   if(Rev==0) return false;
   c[ii][jj]='o';
   for(int k=0; k<8; k++){
      int ni=ii, nj=jj;
      while(1){
         ni+=dy[k];
         nj+=dx[k];
         //cout<< ni<< " "<< nj<< endl;
         if(!(0<=ni&&ni<N&&0<=nj&&nj<N)) break;
         if(c[ni][nj]=='.') break;
         if(c[ni][nj]=='o'){
            for(int _i=ii+dy[k], _j=jj+dx[k]; _i!=ni||_j!=nj; _i+=dy[k], _j+=dx[k]){
               c[_i][_j]='o';
            }
            break;
         }
      }
   }
   return true;
}

bool Hoge(){
   int Rev=0;
   int ii, jj;
   for(int i=N-1; i>=0; i--){
      for(int j=N-1; j>=0; j--){
         if(c[i][j]=='o'||c[i][j]=='x') continue;
         vector<int> V;
         for(int k=0; k<8; k++){
            int ni=i+dy[k];
            int nj=j+dx[k];
            if(!(0<=ni&&ni<N&&0<=nj&&nj<N)) continue;
            V.push_back(k);
         }
         int rev=0;
         for(int k: V){
         int ni=i, nj=j;
            while(1){
               ni+=dy[k];
               nj+=dx[k];
               if(!(0<=ni&&ni<N&&0<=nj&&nj<N)) break;
               if(c[ni][nj]=='.') break;
               if(c[ni][nj]=='x'){
                  for(int _i=i+dy[k], _j=j+dx[k]; _i!=ni||_j!=nj; _i+=dy[k], _j+=dx[k]){
                     rev++;
                  }
                  break;
               }
            }
         }
         if(rev>Rev){
            ii=i, jj=j;
            Rev=rev;
         }
      }
   }
   if(Rev==0) return false;
   c[ii][jj]='x';
   for(int k=0; k<8; k++){
      int ni=ii, nj=jj;
      while(1){
         ni+=dy[k];
         nj+=dx[k];
         if(!(0<=ni&&ni<N&&0<=nj&&nj<N)) break;
         if(c[ni][nj]=='.') break;
         if(c[ni][nj]=='x'){
            for(int _i=ii+dy[k], _j=jj+dx[k]; _i!=ni||_j!=nj; _i+=dy[k], _j+=dx[k]){
               c[_i][_j]='x';
            }
            break;
         }
      }
   }
   return true;
}

int main(){

   for(int i=0; i<N; i++){
      for(int j=0; j<N; j++){
         cin>> c[i][j];
      }
   }

   bool F=true;
   while(F){
      bool x=Mami();
      bool y=Hoge();
      //cout<< x<< " "<< y<< endl;
      F=(x||y);
   }

   for(int i=0; i<N; i++){
      for(int j=0; j<N; j++){
         cout<< c[i][j];
      }cout<< endl;
   }

   return 0;
}

Measured memory_bytes: 3088