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;
const int N = 3e5 + 5;
int n, l[N], u[N], m;
pair<int, int> a[N];
vector<int> ans[N];
map<pair<int, int>, bool> Map;
inline void upd(int u, int first) {
  Map[pair<int, int>(u, first)] = Map[pair<int, int>(first, u)] = 1;
}
int main() {
  cin >> n;
  for (int i = 1; i <= n; i++) scanf("%d", &a[i].first), a[i].second = i;
  sort(a + 1, a + 1 + n), a[0].first = 3, l[n] = a[n].first;
  for (int i = n - 1; i; i--) {
    int _ = l[i + 1] - a[i].first + 2;
    if (_ == 2) _ = 4;
    l[i] =
        _ < a[i - 1].first ? a[i - 1].first + (a[i - 1].first & 1 ^ _ & 1) : _;
  }
  cerr << l[1] << endl, m = l[1];
  for (int i = 1; i <= m; i++) u[i] = i, upd(i, i % m + 1);
  for (int i = 1; i < n; i++) {
    int ex = l[i + 1] + a[i].first - l[i] - 2 >> 1,
        s = l[i] - a[i].first + ex + 1, tmp = u[l[i]];
    if (!ex) {
      while (Map[pair<int, int>(u[s], u[s + a[i].first - 1])]) s--;
      upd(u[s], u[s + a[i].first - 1]);
      for (int j = s; j < s + a[i].first; j++) ans[a[i].second].push_back(u[j]);
      for (int j = s + a[i].first - 1; j <= l[i]; j++)
        u[j - a[i].first + 2] = u[j];
    } else {
      for (int j = s; j <= l[i]; j++) ans[a[i].second].push_back(u[j]);
      for (int j = m + ex; j > m; j--) ans[a[i].second].push_back(j);
      for (int j = s + 1; j <= s + ex; j++) u[j] = ++m, upd(u[j - 1], u[j]);
      u[s + ex + 1] = tmp, upd(u[s + ex], u[s + ex + 1]);
    }
  }
  for (int i = 1; i <= a[n].first; i++) ans[a[n].second].push_back(u[i]);
  printf("%d\n", m);
  for (int i = 1; i <= n; i++, puts(""))
    for (int j : ans[i]) printf("%d ", j);
  return 0;
}