def solve(): n = int(input()) board = [[] for _ in range(n)] boardX = [0,0,0] boardO = [0,0,0] for i in range(3): boardX[i] = [[[]for _ in range(n)] for _ in range(n)] boardO[i] = [[[]for _ in range(n)] for _ in range(n)] changeX = [0,0,0] changeO = [0,0,0] for x in range(n): board[x] = input() for y in range(n): for i in range(3): boardX[i][x][y] = board[x][y] boardO[i][x][y] = board[x][y] k = 0 for x in range(n): for y in range(n): if board[x][y]=='.': continue if board[x][y]=='X': changeO[(x+y)%3]+=1 boardO[(x+y)%3][x][y]='O' else: changeX[(x + y) % 3] += 1 boardX[(x + y) % 3][x][y] = 'X' k+=1 minChanges = 1e9 for i in range(3): for j in range(3): if i==j: continue if (changeX[i]+changeO[j]<=(int)(k/3)): minChanges = min(minChanges,changeX[i]+changeO[j]) for i in range(3): for j in range(3): if i==j: continue if (changeX[i]+changeO[j]==minChanges): for x in range(n): for y in range(n): if board[x][y] == '.': print('.',end='') elif ((x+y)%3==i): print(boardX[(x+y)%3][x][y],end='') elif ((x+y)%3==j): print(boardO[(x+y)%3][x][y],end='') else: print(board[x][y],end='') print() return if __name__ == '__main__': t = int(input()) for _ in range(t): solve()