#include <bits/stdc++.h>
using namespace std;
const int maxint = -1u >> 1;
int n, m;
char ch;
char x[2010][2010];
queue<pair<int, int> > q;
int dx[4] = {0, 0, 1, -1};
int dy[4] = {1, -1, 0, 0};
bool check(int a, int b) {
  if (a >= 1 && b >= 1 && a <= n && b <= m) {
    return x[a][b] == '.';
  } else {
    return false;
  }
}
bool ok(int a, int b) {
  int tmp = 0;
  for (int i = 0; i < 4; i++) {
    tmp += (check(a, b) & check(a + dx[i], b + dy[i]));
  }
  return tmp == 1;
}
void add(int a, int b) {
  for (int i = 0; i < 4; i++) {
    if (ok(a + dx[i], b + dy[i])) {
      q.push(make_pair(a + dx[i], b + dy[i]));
    }
  }
}
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= n; i++) {
    scanf("%s", x[i] + 1);
  }
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= m; j++) {
      if (ok(i, j)) {
        q.push(make_pair(i, j));
      }
    }
  }
  int flag = true;
  while (!q.empty()) {
    pair<int, int> p = q.front();
    q.pop();
    int a = p.first, b = p.second;
    if (check(a, b)) {
      int exist = false;
      if (check(a - 1, b)) {
        x[a][b] = 'v';
        x[a - 1][b] = '^';
        exist = true;
        add(a - 1, b);
        add(a, b);
      }
      if (check(a + 1, b)) {
        x[a][b] = '^';
        x[a + 1][b] = 'v';
        exist = true;
        add(a, b);
        add(a + 1, b);
      }
      if (check(a, b - 1)) {
        x[a][b - 1] = '<';
        exist = true;
        x[a][b] = '>';
        add(a, b);
        add(a, b - 1);
      }
      if (check(a, b + 1)) {
        x[a][b + 1] = '>';
        x[a][b] = '<';
        exist = true;
        add(a, b);
        add(a, b + 1);
      }
      if (!exist) {
        flag = false;
        break;
      }
    }
  }
  if (!flag) {
    cout << "Not unique" << endl;
  } else {
    for (int i = 1; i <= n; i++) {
      for (int j = 1; j <= m; j++) {
        if (x[i][j] == '.') flag = false;
      }
    }
    if (flag) {
      for (int i = 1; i <= n; i++) {
        printf("%s\n", x[i] + 1);
      }
    } else {
      cout << "Not unique" << endl;
    }
  }
  return 0;
}
