#include <bits/stdc++.h>
using namespace std;
char ch[2004][2004];
void dfs(int i, int j) {
  int k;
  if (ch[i][j - 1] == '.' && ch[i][j + 1] != '.' && ch[i - 1][j] != '.' &&
      ch[i + 1][j] != '.') {
    ch[i][j] = '>';
    ch[i][j - 1] = '<';
    k = j - 1;
    if (ch[i][k - 1] == '.') dfs(i, k - 1);
    if (ch[i][k + 1] == '.') dfs(i, k + 1);
    if (ch[i - 1][k] == '.') dfs(i - 1, k);
    if (ch[i + 1][k] == '.') dfs(i + 1, k);
  }
  if (ch[i][j + 1] == '.' && ch[i][j - 1] != '.' && ch[i - 1][j] != '.' &&
      ch[i + 1][j] != '.') {
    ch[i][j] = '<';
    ch[i][j + 1] = '>';
    k = j + 1;
    if (ch[i][k - 1] == '.') dfs(i, k - 1);
    if (ch[i][k + 1] == '.') dfs(i, k + 1);
    if (ch[i - 1][k] == '.') dfs(i - 1, k);
    if (ch[i + 1][k] == '.') dfs(i + 1, k);
  }
  if (ch[i - 1][j] == '.' && ch[i][j - 1] != '.' && ch[i][j + 1] != '.' &&
      ch[i + 1][j] != '.') {
    ch[i][j] = 'v';
    ch[i - 1][j] = '^';
    k = i - 1;
    if (ch[k - 1][j] == '.') dfs(k - 1, j);
    if (ch[k + 1][j] == '.') dfs(k + 1, j);
    if (ch[k][j - 1] == '.') dfs(k, j - 1);
    if (ch[k][j + 1] == '.') dfs(k, j + 1);
  }
  if (ch[i + 1][j] == '.' && ch[i][j - 1] != '.' && ch[i][j + 1] != '.' &&
      ch[i - 1][j] != '.') {
    ch[i + 1][j] = 'v';
    ch[i][j] = '^';
    k = i + 1;
    if (ch[k - 1][j] == '.') dfs(k - 1, j);
    if (ch[k + 1][j] == '.') dfs(k + 1, j);
    if (ch[k][j - 1] == '.') dfs(k, j - 1);
    if (ch[k][j + 1] == '.') dfs(k, j + 1);
  }
}
int main() {
  int n, m, i, j;
  cin >> n >> m;
  for (i = 1; i <= n; i++) {
    scanf("\n");
    for (j = 1; j <= m; j++) scanf("%c", &ch[i][j]);
  }
  for (i = 1; i <= n; i++)
    for (j = 1; j <= m; j++) {
      if (ch[i][j] == '.') {
        dfs(i, j);
      }
    }
  for (i = 1; i <= n; i++)
    for (j = 1; j <= m; j++)
      if (ch[i][j] == '.') {
        printf("Not unique\n");
        return 0;
      }
  for (i = 1; i <= n; i++) {
    for (j = 1; j <= m; j++) putchar(ch[i][j]);
    puts("");
  }
}
