#include <bits/stdc++.h>
struct cancerut {
  int a, b, init, poz;
};
bool cmpgay(cancerut a, cancerut b) { return a.init < b.init; }
bool cmpgay2(cancerut a, cancerut b) { return a.poz < b.poz; }
cancerut v[100005];
int main() {
  int n;
  scanf("%d", &n);
  printf("YES\n");
  for (int i = 0; i < n; i++) {
    scanf("%d", &v[i].init);
    v[i].poz = i;
  }
  std::sort(v, v + n, cmpgay);
  for (int i = 0; i < n; i++) {
    if (i < n / 3) {
      v[i].a = i;
      v[i].b = v[i].init - i;
    } else {
      if (i < (2 * n) / 3) {
        v[i].b = i;
        v[i].a = v[i].init - i;
      } else {
        v[i].b = n - i - 1;
        v[i].a = v[i].init - v[i].b;
      }
    }
  }
  std::sort(v, v + n, cmpgay2);
  for (int i = 0; i < n; i++) {
    printf("%d ", v[i].a);
  }
  printf("\n");
  for (int i = 0; i < n; i++) {
    printf("%d ", v[i].b);
  }
  return 0;
}
