Problem: One day Ms Swan bought an orange in a shop. The orange consisted of n·k segments, numbered with integers from 1 to n·k. 

There were k children waiting for Ms Swan at home. The children have recently learned about the orange and they decided to divide it between them. For that each child took a piece of paper and wrote the number of the segment that he would like to get: the i-th (1 ≤ i ≤ k) child wrote the number ai (1 ≤ ai ≤ n·k). All numbers ai accidentally turned out to be different.

Now the children wonder, how to divide the orange so as to meet these conditions:

  * each child gets exactly n orange segments; 
  * the i-th child gets the segment with number ai for sure; 
  * no segment goes to two children simultaneously. 



Help the children, divide the orange and fulfill the requirements, described above.

Input

The first line contains two integers n, k (1 ≤ n, k ≤ 30). The second line contains k space-separated integers a1, a2, ..., ak (1 ≤ ai ≤ n·k), where ai is the number of the orange segment that the i-th child would like to get.

It is guaranteed that all numbers ai are distinct.

Output

Print exactly n·k distinct integers. The first n integers represent the indexes of the segments the first child will get, the second n integers represent the indexes of the segments the second child will get, and so on. Separate the printed numbers with whitespaces.

You can print a child's segment indexes in any order. It is guaranteed that the answer always exists. If there are multiple correct answers, print any of them.

Examples

Input

2 2
4 1


Output

2 4 
1 3 


Input

3 1
2


Output

3 2 1 

Solution (in JAVA):

Solution:
import java.util.Arrays;
import java.util.Scanner;

public class Dividing_Orange_Takua {
	  static Scanner  in=new Scanner(System.in);
	  
	public static void main(String[] args) {
  int n=in.nextInt();
  int k=in.nextInt();
  int [][]b=new int[k][n];
     
    int []a=new int[k];
    for(int i=0;i<k;i++ )
    {
    	a[i]=in.nextInt();
    }
    
    
   
    
    
  	  for(int i=0;i<k;i++ )
  	  {
  		  b[i][0]=a[i];
  	  }
  	  
     int c=1;
   Arrays.parallelSort(a);
   
  for(int j=1;j<n;j++ )
  {  
	  for(int i=0;i<k;i++ )
	  {   
		  
		  
	      for(int C=0;C<k;C++)
	    	  if(a[C]==c)
	    	  {
	    		  c++;
	    
	    	  }
	      
	      if(c>n*k)
			  break;
	    
	      b[i][j]=c++;
	   
	  }
  }
 
  
   for(int i=0;i<k;i++ )
   { 
	   for(int j=0;j<n;j++ )
	     System.out.print(b[i][j]+" ");	
	    
    System.out.println();
   }
  

  
   
   
   }
}