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 *a*<sub class="lower-index">*i*</sub> (1 ≤ *a*<sub class="lower-index">*i*</sub> ≤ *n*·*k*). All numbers *a*<sub class="lower-index">*i*</sub> 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 *a*<sub class="lower-index">*i*</sub> for sure; -  no segment goes to two children simultaneously. 
Help the children, divide the orange and fulfill the requirements, described above.
The first line contains two integers *n*, *k* (1 ≤ *n*, *k* ≤ 30). The second line contains *k* space-separated integers *a*<sub class="lower-index">1</sub>, *a*<sub class="lower-index">2</sub>, ..., *a*<sub class="lower-index">*k*</sub> (1 ≤ *a*<sub class="lower-index">*i*</sub> ≤ *n*·*k*), where *a*<sub class="lower-index">*i*</sub> is the number of the orange segment that the *i*-th child would like to get.

It is guaranteed that all numbers *a*<sub class="lower-index">*i*</sub> are distinct.
import sys, io, os
import math
import bisect
import heapq
import string
from collections import defaultdict,Counter,deque
input = sys.stdin.readline
 
def I():
    return input()
 
def II():
    return int(input())
 
def MII():
    return map(int, input().split())
 
def LI():
    return list(input().split())
 
def LII():
    return list(map(int, input().split()))
 
def GMI():
    return map(lambda x: int(x) - 1, input().split())
 
def LGMI():
    return list(map(lambda x: int(x) - 1, input().split()))
 
def WRITE(out):
  return print('\n'.join(map(str, out)))
 
def WS(out):
  return print(' '.join(map(str, out)))
 
def WNS(out):
  return print(''.join(map(str, out)))

'''
n - majority element
'''

def solve():
  n, k = MII()
  oranges = [i for i in range(n*k+1)]
  oranges[0] = -1

  splits = [[] for _ in range(k)]

  for i,num in enumerate(LII()):
    oranges[num] = -1 #selected -> remove
    splits[i].append(num)
  
  # convert 1-index to 0-index
  i = 0
  splits_idx = 0
  while i < len(oranges):
    if oranges[i] != -1:
      splits[splits_idx % k].append(oranges[i])
      splits_idx += 1
    i += 1

  for oranges in splits:
    WS(oranges)

solve()