#include <bits/stdc++.h>
using namespace std;
int vis[1005], a[1005], b[25][25];
int main() {
  ios::sync_with_stdio(false);
  int p, n, r, cnt, x, i, k = 0, j, flag = 0, s, t;
  cin >> n;
  for (i = 0; i < n * n; i++) {
    cin >> x;
    if (!vis[x]) {
      a[k++] = x;
    }
    vis[x]++;
  }
  if (n % 2 == 0) {
    for (i = 0; i < k; i++) {
      if (vis[a[i]] % 4 != 0) {
        flag = 1;
        break;
      }
    }
    if (flag == 1)
      cout << "NO" << endl;
    else {
      cout << "YES" << endl;
      s = n / 2;
      r = 0;
      t = vis[a[r]] / 4;
      for (i = 0; i < s; i++) {
        for (j = 0; j < s; j++) {
          b[i][j] = a[r];
          t--;
          if (t == 0) {
            r++;
            t = vis[a[r]] / 4;
          }
        }
      }
      for (i = 0; i < s; i++) {
        cnt = s - 1;
        for (j = s; j < n; j++) {
          b[i][j] = b[i][cnt];
          cnt--;
        }
      }
      for (i = 0; i < s; i++) {
        for (j = 0; j < n; j++) {
          if (j != 0) cout << " ";
          cout << b[i][j];
        }
        cout << endl;
      }
      for (i = s - 1; i >= 0; i--) {
        for (j = 0; j < n; j++) {
          if (j != 0) cout << " ";
          cout << b[i][j];
        }
        cout << endl;
      }
    }
  } else {
    cnt = 0;
    if (n == 1) {
      cout << "YES" << endl << a[0] << endl;
      return 0;
    }
    for (i = 0; i < k; i++) {
      if (vis[a[i]] % 2 == 1) {
        p = a[i];
        cnt++;
        vis[p]--;
      }
    }
    if (cnt != 1) {
      cout << "NO" << endl;
    } else {
      s = n / 2;
      r = 0;
      while (vis[a[r]] < 4) {
        r++;
        if (r >= k) {
          break;
        }
      }
      if (r >= k) {
        cout << "NO" << endl;
        return 0;
      }
      t = vis[a[r]] / 4;
      for (i = 0; i < s; i++) {
        for (j = 0; j < s; j++) {
          if (r >= k) {
            flag = 1;
            break;
          }
          b[i][j] = a[r];
          t--;
          vis[a[r]] -= 4;
          if (t == 0) {
            r++;
            while (vis[a[r]] < 4) {
              r++;
              if (r >= k) break;
            }
            t = vis[a[r]] / 4;
          }
        }
      }
      if (flag == 1) {
        cout << "NO" << endl;
        return 0;
      }
      for (i = 0; i < s; i++) {
        cnt = s - 1;
        for (j = s + 1; j < n; j++) {
          b[i][j] = b[i][cnt--];
        }
      }
      r = 0;
      while (vis[a[r]] == 0) {
        r++;
      }
      t = vis[a[r]] / 2;
      for (i = 0; i < s; i++) {
        b[i][s] = a[r];
        vis[a[r]] -= 2;
        t--;
        if (t == 0) {
          while (vis[a[r]] == 0) {
            r++;
          }
          t = vis[a[r]] / 2;
        }
      }
      cout << "YES" << endl;
      for (i = 0; i < s; i++) {
        for (j = 0; j < n; j++) {
          if (j != 0) cout << " ";
          cout << b[i][j];
        }
        cout << endl;
      }
      b[s][s] = p;
      r = 0;
      while (vis[a[r]] == 0) {
        r++;
      }
      t = vis[a[r]] / 2;
      for (i = 0; i < s; i++) {
        if (i != 0) cout << " ";
        b[s][i] = a[r];
        cout << a[r];
        vis[a[r]] -= 2;
        t--;
        if (t == 0) {
          while (vis[a[r]] == 0) {
            r++;
            if (r >= k) break;
          }
          t = vis[a[r]] / 2;
        }
      }
      cout << " " << p;
      for (i = s - 1; i >= 0; i--) {
        cout << " " << b[s][i];
      }
      cout << endl;
      for (i = s - 1; i >= 0; i--) {
        for (j = 0; j < n; j++) {
          if (j != 0) cout << " ";
          cout << b[i][j];
        }
        cout << endl;
      }
    }
  }
  return 0;
}
