#include <bits/stdc++.h>
using namespace std;
struct bung {
  int pos;
  int val;
  bool operator<(const bung &a) const { return val > a.val; }
};
int s[100010];
bung o[100010];
int ans[100010][2];
int main() {
  int i, n;
  int k;
  bool sw = false;
  scanf("%d", &n);
  for (i = 0; i < n; i++) {
    scanf("%d", &s[i]);
    o[i].pos = i;
    o[i].val = s[i];
  }
  sort(o, o + n);
  k = (n + 2) / 3;
  for (i = 0; i < k; i++) {
    ans[o[i].pos][0] = i;
    ans[o[i].pos][1] = o[i].val - ans[o[i].pos][0];
  }
  for (i = k; i < (n < k * 2 ? n : k * 2); i++) {
    ans[o[i].pos][0] = o[i].val;
    ans[o[i].pos][1] = 0;
  }
  for (i = (n < k * 2 ? n : k * 2); i < n; i++) {
    ans[o[i].pos][0] = 0;
    ans[o[i].pos][1] = o[i].val;
  }
  printf("YES\n");
  for (i = 0; i < n; i++) printf("%d ", ans[i][0]);
  printf("\n");
  for (i = 0; i < n; i++) printf("%d ", ans[i][1]);
  printf("\n");
  return 0;
}
