Problem: Ujan has finally cleaned up his house and now wants to decorate the interior. He decided to place a beautiful carpet that would really tie the guest room together.

He is interested in carpets that are made up of polygonal patches such that each side of a patch is either a side of another (different) patch, or is an exterior side of the whole carpet. In other words, the carpet can be represented as a planar graph, where each patch corresponds to a face of the graph, each face is a simple polygon. The perimeter of the carpet is the number of the exterior sides. 

Ujan considers a carpet beautiful if it consists of f patches, where the i-th patch has exactly a_i sides, and the perimeter is the smallest possible. Find an example of such a carpet, so that Ujan can order it!

Input

The first line of input contains a single integer f (1 ≤ f ≤ 10^5), the number of patches in the carpet. 

The next line contains f integers a_1, …, a_f (3 ≤ a_i ≤ 3⋅ 10^5), the number of sides of the patches. The total number of the sides of the patches a_1 + … + a_f does not exceed 3⋅10^5.

Output

Output the description of the carpet as a graph. 

First, output a single integer n (3 ≤ n ≤ 3 ⋅ 10^5), the total number of vertices in your graph (the vertices must be numbered from 1 to n). 

Then output f lines containing the description of the faces. The i-th line should describe the i-th face and contain a_i distinct integers v_{i,1}, …, v_{i,a_i} (1 ≤ v_{i,j} ≤ n), which means that the vertices v_{i,j} and v_{i,(j mod{a_i})+1} are connected by an edge for any 1 ≤ j ≤ a_i.

The graph should be planar and satisfy the restrictions described in the problem statement. Its perimeter should be the smallest possible. There should be no double edges or self-loops in the graph. The graph should be connected. Note that a solution always exists; if there are multiple solutions, output any of them.

Examples

Input


2
3 3


Output


4
2 1 4 
1 2 3 


Input


3
5 3 5


Output


6
1 2 3 4 5
4 5 6
1 3 4 6 5

Note

In the first sample, the two triangular faces are connected by a single edge, which results in the minimum perimeter 4.

The figure shows one possible configuration for the second sample. The minimum perimeter in this case is 3. 

<image>

Solution (in CPP):

Solution:
#include <bits/stdc++.h>
using namespace std;
inline char nc() {
  static char buf[100000], *l = buf, *r = buf;
  return l == r && (r = (l = buf) + fread(buf, 1, 100000, stdin), l == r)
             ? EOF
             : *l++;
}
template <class T>
void read(T &x) {
  x = 0;
  int f = 1, ch = nc();
  while (ch < '0' || ch > '9') {
    if (ch == '-') f = -1;
    ch = nc();
  }
  while (ch >= '0' && ch <= '9') {
    x = x * 10 - '0' + ch;
    ch = nc();
  }
  x *= f;
}
const int maxf = 1e5 + 50;
const int maxn = 3e5 + 50;
const int maxnode = maxn + maxf;
int f;
int n;
int hd;
int tl;
int q[maxnode];
vector<int> an[maxf];
struct node {
  int x, id;
  inline bool operator<(const node &other) const { return x > other.x; }
} a[maxf];
void glue(int x, int r, int m) {
  for (int i = 1; i < r; ++i) {
    an[x].push_back(q[--tl]);
  }
  an[x].push_back(q[tl - 1]);
  for (int i = r + 1; i < m; ++i) {
    an[x].push_back(q[tl++] = ++n);
  }
  an[x].push_back(q[tl++] = q[hd++]);
}
int main() {
  read(f);
  for (int i = 1; i <= f; ++i) {
    read(a[i].x), a[i].id = i;
  }
  sort(a + 1, a + f + 1);
  for (int i = 1; i <= a[1].x; ++i) {
    q[tl++] = ++n;
    an[a[1].id].push_back(n);
  }
  a[f + 1].x = 3;
  for (int i = 2; i <= f; ++i) {
    int m = a[i].x;
    int r = min(m - 1, (tl - hd + m - a[i + 1].x) / 2);
    glue(a[i].id, r, m);
  }
  printf("%d\n", n);
  for (int i = 1; i <= f; ++i) {
    for (int j = 0; j < an[i].size(); ++j) {
      if (j) printf(" ");
      printf("%d", an[i][j]);
    }
    printf("\n");
  }
  return 0;
}