import sys from collections import deque data = sys.stdin.buffer n = int(data.readline()) target = [data.readline().strip() for _ in range(n)] size = n * n bomb, near, queued = bytearray(size), bytearray(size), bytearray(b"\1") * size queue = deque(range(size)) directions = ((-1, -1), (-1, 0), (-1, 1), (0, -1), (0, 1), (1, -1), (1, 0), (1, 1)) while queue: cell = queue.popleft() queued[cell] = 0 r, c = divmod(cell, n) wanted = near[cell] < target[r][c] - 48 if bomb[cell] == wanted: continue delta, bomb[cell] = (1 if wanted else -1), wanted for dr, dc in directions: nr, nc = r + dr, c + dc if 0 <= nr < n and 0 <= nc < n: nxt = nr * n + nc near[nxt] += delta if not queued[nxt]: queued[nxt] = 1 queue.append(nxt) print("\n".join("".join("o" if bomb[r * n + c] else "." for c in range(n)) for r in range(n)))