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;
int const N = 300000;
int to[N], V, n, x[N];
vector<int> an[N];
set<int> g[N];
struct S {
  int l, r;
  S() {}
  S(int x) : l(x), r(x) {}
  S operator+(int x) {
    S an;
    an.r = r + x - 2;
    if (l <= x && x <= r)
      an.l = 3 + !(an.r & 1);
    else
      an.l = min(abs(r - x), abs(l - x)) + 2;
    return an;
  }
} sg[N];
void aded(int a, int b) {
  g[a].insert(b);
  g[b].insert(a);
}
int st;
void go(int c, int i = n - 1) {
  an[i].resize(x[i]);
  if (i == 0) {
    for (int j = 0; j < (int)(x[i]); ++j) an[i][j] = j + 1;
    V = x[i];
    for (int j = 0; j < (int)(x[i] - 1); ++j) to[j] = j + 1;
    to[x[i] - 1] = 0;
    return;
  }
  int e = max(1, max(sg[i - 1].l + x[i] - c + 1 >> 1, x[i] - c + 1)),
      b = c - x[i] + 2 * e;
  go(b, i - 1);
  int t = st, o = t;
  for (int j = 0; j < (int)(e); ++j) o = to[o];
  if (to[t] != o && to[o] != t) {
    while (g[t].find(o) != g[t].end()) t = to[t], o = to[o];
    st = t;
  }
  an[i][0] = t + 1;
  for (int j = 0; j < (int)(e); ++j) {
    aded(t, to[t]);
    t = to[t];
    an[i][j + 1] = t + 1;
  }
  for (int j = e + 1; j < (int)(x[i]); ++j) an[i][j] = V + j - e;
  if (e + 1 == x[i])
    to[st] = t, aded(st, t);
  else {
    aded(V, t);
    to[V++] = t;
    for (int j = e + 1; j < (int)(x[i] - 1); ++j)
      aded(V, V - 1), to[V] = V - 1, ++V;
    to[st] = V - 1;
    aded(st, V - 1);
  }
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < (int)(n); ++i) scanf("%d", x + i);
  sg[0] = x[0];
  for (int i = 1; i < (int)(n); ++i) sg[i] = sg[i - 1] + x[i];
  go(sg[n - 1].l);
  printf("%d\n", V);
  for (int i = 0; i < (int)(n); ++i) {
    printf("%d", an[i][0]);
    for (int j = 1; j < (int)(x[i]); ++j) printf(" %d", an[i][j]);
    printf("\n");
  }
}