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>
// upsolve with rainboy
import java.io.*;
import java.util.*;

public class CF1242E extends PrintWriter {
	CF1242E() { super(System.out); }
	Scanner sc = new Scanner(System.in);
	public static void main(String[] $) {
		CF1242E o = new CF1242E(); o.main(); o.flush();
	}

	void main() {
		int n = sc.nextInt();
		int[] aa = new int[n];
		int[][] vv = new int[n][];
		Integer[] ii = new Integer[n];
		int cnt = 0;
		for (int i = 0; i < n; i++) {
			int a = sc.nextInt();
			cnt += aa[i] = a;
			vv[i] = new int[a];
			ii[i] = i;
		}
		Arrays.sort(ii, (i, j) -> aa[j] - aa[i]);
		int[] qq = new int[cnt]; cnt = 0; int k = 0;
		for (int i = ii[0], j = 0; j < aa[i]; j++)
			qq[cnt++] = vv[i][j] = ++k;
		for (int h = 1; h < n; h++) {
			int i = ii[h];
			if (aa[i] > 3) {
				int a = aa[i];
				int c = h + 1 < n ? aa[ii[h + 1]] : 3;
				// cnt - m + a - m >= c
				// m <= (cnt + a - c) / 2
				int m = Math.min((cnt + a - c) / 2, a - 1);
				for (int j = 0; j < m - 1; j++)
					vv[i][j] = qq[--cnt];
				vv[i][m - 1] = qq[cnt - 1];
				for (int j = m; j < a - 1; j++)
					qq[cnt++] = vv[i][j] = ++k;
				vv[i][a - 1] = qq[0];
			} else if (cnt > 3) {
				vv[i][0] = qq[cnt - 1];
				vv[i][1] = qq[cnt - 2];
				vv[i][2] = qq[0];
				cnt--;
			} else {
				while (h < n) {
					i = ii[h];
					vv[i][0] = qq[0];
					vv[i][1] = qq[2];
					vv[i][2] = ++k;
					h++;
					if (h < n) {
						i = ii[h];
						vv[i][0] = qq[1];
						vv[i][1] = qq[2];
						vv[i][2] = k;
						qq[2] = k;
						h++;
					}
				}
				break;
			}
		}
		println(k);
		for (int i = 0; i < n; i++) {
			int a = aa[i];
			for (int j = 0; j < a; j++)
				print(vv[i][j] + " ");
			println();
		}
	}
}
