#include <bits/stdc++.h>
int n, a[100000], b[100000], s[100000], id[100000], inv[100000];
void sort(int l, int r) {
  int i = l, j = r, p = s[(l + r) / 2], tmp;
  while (i <= j) {
    while (s[i] < p) ++i;
    while (p < s[j]) --j;
    if (i <= j) {
      tmp = s[i];
      s[i] = s[j];
      s[j] = tmp;
      tmp = id[i];
      id[i] = id[j];
      id[j] = tmp;
      ++i;
      --j;
    }
  }
  if (i < r) sort(i, r);
  if (l < j) sort(l, j);
}
int main(void) {
  int i;
  scanf("%d", &n);
  for (i = 0; i < n; ++i) id[i] = i;
  for (i = 0; i < n; ++i) scanf("%d", &s[i]);
  sort(0, n - 1);
  for (i = 0; i < n / 3 + (n % 3 > 0); ++i) {
    a[i] = i;
    b[i] = s[i] - a[i];
  }
  for (; i < 2 * (n / 3) + n % 3; ++i) {
    b[i] = i;
    a[i] = s[i] - b[i];
  }
  for (; i < n; ++i) {
    b[i] = n - i - 1;
    a[i] = s[i] - b[i];
  }
  printf("YES\n");
  for (i = 0; i < n; ++i) inv[id[i]] = i;
  for (i = 0; i < n; ++i) printf("%d ", a[inv[i]]);
  printf("\n");
  for (i = 0; i < n; ++i) printf("%d ", b[inv[i]]);
  printf("\n");
  exit(EXIT_SUCCESS);
}
