#include <bits/stdc++.h> 
using namespace std;
#define     ll              long long
#define     mp              make_pair
#define     rep(i,a,b)      for( i=a;i<b;++i)
#define     repr(i,a,b)     for( i=a;i>=b;i--)
#define     up              upper_bound
#define     lb              lower_bound
#define     t()             int test;cin>>test;while(test--)
#define     IOS             ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);

#define TRACE
#ifdef TRACE
#define trace(...) __f(#__VA_ARGS__, __VA_ARGS__)
    template <typename Arg1>
    void __f(const char* name, Arg1&& arg1){
        cout << name << " : " << arg1 << endl;
        //use cerr if u want to display at the bottom
    }
    template <typename Arg1, typename... Args>
    void __f(const char* names, Arg1&& arg1, Args&&... args){
        const char* comma = strchr(names + 1, ','); cout.write(names, comma - names) << " : " << arg1<<" | ";__f(comma+1, args...);
    }
#else
#define trace(...)
#endif

bool cmp(pair<ll,ll> a,pair<ll,ll> b){
    if(a.first != b.first){
        return a.first < b.first;
    }else{
        return a.second < b.second;
    }
}

int main()
{  
    #ifndef ONLINE_JUDGE
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
    #endif
    IOS;
    ll t;
    cin >> t;
    while(t--){
        ll n; 
        cin >> n;
        vector<string> s(n);
        for(ll i = 0;i < n;i++){
                cin >> s[i];
        } 
        ll k= 0;
        for(ll i = 0;i < n;i++){
            for(ll j = 0;j < n;j++){
                if (s[i][j] != '.'){ 
                    k++;
                }
            }
        }
        bool flag = true;
        for(ll x = 0;x < 3;x++){
            for(ll y = 0;y < 3;y++){
                if(x == y){
                    continue;
                }else{
                    ll count = 0;
                    for(ll i = 0;i < n;i++){
                        for(ll j= 0;j < n;j++){
                            if(s[i][j] == 'X' && (i + j)%3 == x){
                                count++;
                            }else if(s[i][j] == 'O' && (i + j)%3 == y){
                                count++;
                            }
                        }
                    }
                    if(count <= k/3){
                        for(ll i = 0;i < n;i++){
                            for(ll j= 0;j < n;j++){
                                if(s[i][j] == 'X' && (i + j)%3 == x){
                                    s[i][j] = 'O';
                                }else if(s[i][j] == 'O' && (i + j)%3 == y){
                                    s[i][j] = 'X';
                                }
                            }
                        }
                        for(auto it : s){
                            cout << it << "\n";
                        }
                        flag = false;
                        break;
                    }

                }
            }
            if(!flag){
                break;
            }
        }
    }
    return 0;
}   
 