#include <bits/stdc++.h>
using namespace std;
int x[] = {0, 0, 1, -1};
int y[] = {1, -1, 0, 0};
int dp[3000][3000];
queue<int> qu;
char str[3000][3000];
int n, m;
int fun(int v, int w) {
  if (v >= 0 && v < n && w >= 0 && w < m && str[v][w] == '.') return 1;
  return 0;
}
void build(int v, int w, int p, int q) {
  if (v > p) swap(v, p);
  if (w > q) swap(w, q);
  if (v == p) {
    str[v][w] = '<';
    str[v][q] = '>';
    return;
  }
  str[v][w] = '^';
  str[p][w] = 'v';
}
void bfs() {
  int a, b, v, w, p, q, l;
  while (!qu.empty()) {
    v = qu.front(), qu.pop();
    w = qu.front(), qu.pop();
    if (str[v][w] != '.') continue;
    for (int i = 0; i < 4; i++) {
      p = v + x[i];
      q = w + y[i];
      l = fun(p, q);
      if (l == 1) {
        build(v, w, p, q);
        for (int j = 0; j < 4; j++) {
          a = p + x[j];
          b = q + y[j];
          l = fun(a, b);
          if (l == 1)
            dp[a][b]--;
          else
            continue;
          if (dp[a][b] == 1) {
            qu.push(a);
            qu.push(b);
          }
        }
        break;
      }
    }
  }
}
int check() {
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      if (str[i][j] == '.') return 0;
    }
  }
  return 1;
}
void print() {
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      cout << str[i][j];
    }
    cout << endl;
  }
}
int main() {
  int i, j, k, l, v, w;
  cin >> n >> m;
  for (i = 0; i < n; i++) {
    cin >> str[i];
  }
  int cnt = 0;
  for (i = 0; i < n; i++) {
    for (j = 0; j < m; j++) {
      if (str[i][j] != '.') continue;
      cnt++;
      for (k = 0; k < 4; k++) {
        v = x[k] + i;
        w = y[k] + j;
        dp[i][j] += fun(v, w);
      }
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < m; j++) {
      if (str[i][j] == '*') continue;
      if (dp[i][j] == 1) {
        qu.push(i);
        qu.push(j);
      }
    }
  }
  if (cnt == 0) {
    print();
    return 0;
  }
  if (qu.empty()) {
    printf("Not unique\n");
    return 0;
  }
  bfs();
  l = check();
  if (l == 0) {
    printf("Not unique\n");
    return 0;
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < m; j++) {
      cout << str[i][j];
    }
    cout << endl;
  }
}
