#include <bits/stdc++.h>
using namespace std;
int n, m;
int t[3010][3010];
int v[3010], pos[3010];
bool done[2 * 3010];
char s[3010][3010];
void move_it(int a, int b, int delta) {
  t[a][b] += delta;
  pos[b] += delta;
}
int main() {
  cin >> n >> m;
  for (int i = 1; i <= m; ++i) {
    cin >> v[i];
  }
  int sum = n * (n - 1);
  for (int i = 1; i <= m; ++i) {
    sum -= v[i];
    if (sum < (n - i) * (n - i - 1)) {
      cout << "no\n";
      return 0;
    }
  }
  for (int i = m + 1; i <= n; ++i) {
    v[i] = min(sum - (n - i) * (n - i - 1), v[i - 1]);
    sum -= v[i];
  }
  if (sum != 0) {
    cout << "no\n";
    return 0;
  }
  for (int i = 1; i <= n; ++i) {
    pos[i] = v[i];
  }
  for (int i = 1; i <= n; ++i) {
    vector<int> others;
    for (int j = 1; j <= n; ++j) {
      if (!done[j]) {
        others.push_back(j);
      }
    }
    auto cmp = [](int a, int b) { return pos[a] < pos[b]; };
    sort(others.begin(), others.end(), cmp);
    auto current = others.back();
    others.pop_back();
    int temp = 2 * (n - i) - pos[current];
    done[current] = true;
    while (!others.empty() && temp) {
      auto c = others.back();
      others.pop_back();
      if (temp >= 2 && pos[c] >= 2) {
        temp -= 2;
        move_it(current, c, -2);
      } else {
        temp -= 1;
        move_it(current, c, -1);
      }
    }
    for (int j = 1; j <= n; ++j) {
      if (done[j]) continue;
      if (t[current][j] == 0) {
        t[current][j] = 2;
        t[j][current] = -2;
      } else if (t[current][j] == -1 || t[current][j] == 1) {
        t[current][j] = 1;
        t[j][current] = 1;
      } else if (t[current][j] == -2) {
        t[j][current] = 2;
      }
    }
  }
  cout << "yes\n";
  for (int i = 1; i <= n; ++i) {
    for (int j = 1; j <= n; ++j) {
      if (i == j) {
        s[i][j] = 'X';
      } else if (t[i][j] == -2) {
        s[i][j] = 'L';
      } else if (t[i][j] == -1 || t[i][j] == 1) {
        s[i][j] = 'D';
      } else {
        s[i][j] = 'W';
      }
    }
  }
  for (int i = 1; i <= n; ++i) {
    cout << s[i] + 1 << "\n";
  }
}
