#include <bits/stdc++.h>
using namespace std;
struct node {
  int s, id, a, b;
} s[100100];
bool cmp(node a, node b) { return a.s < b.s; }
bool cmpid(node a, node b) { return a.id < b.id; }
int main() {
  int i, j, k, n, m;
  scanf("%d", &n);
  for (i = 0; i < n; i++) {
    scanf("%d", &s[i].s);
    s[i].id = i;
  }
  sort(s, s + n, cmp);
  printf("YES\n");
  for (i = 0; i < n / 3; i++) {
    s[i].a = i;
    s[i].b = s[i].s - s[i].a;
  }
  for (i = n / 3; i < 2 * n / 3; i++) {
    s[i].b = i;
    s[i].a = s[i].s - s[i].b;
  }
  for (i = n - 1; i >= 2 * n / 3; i--) {
    s[i].b = n - i - 1;
    s[i].a = s[i].s - s[i].b;
  }
  sort(s, s + n, cmpid);
  for (i = 0; i < n; i++) {
    printf("%d", s[i].a);
    if (i != n - 1)
      printf(" ");
    else
      printf("\n");
  }
  for (i = 0; i < n; i++) {
    printf("%d", s[i].b);
    if (i != n - 1)
      printf(" ");
    else
      printf("\n");
  }
  return 0;
}
