object Main {
  def main(args: Array[String]): Unit = {
    val sc = new java.util.Scanner(System.in)
    val h, w = sc.nextInt
    val n = sc.nextInt
    val as = Vector.fill(n)(sc.nextInt)

    val rows = split(go(1, as, Vector[Vector[Int]]()).flatten, w)
    val ans = reverseOdd(rows)

    ans.foreach{ a =>
      a.foreach { b =>
        printf("%s ", b)
      }
      println()
    }

  }

  @tailrec
  def go(i: Int, seq: Seq[Int], result: Seq[Seq[Int]]): Seq[Seq[Int]] = {
    if (seq.length == 0) result
    else go(i+1, seq.tail, result :+ Seq.fill(i)(seq.head))
  }

  def split(seq: Seq[Int], n: Int): Seq[Seq[Int]] = {
    def go(s: Seq[Int], result: Seq[Seq[Int]]): Seq[Seq[Int]] = {
      if (s.length == 0) result
      else go(s.drop(n), result :+ s.dropRight(s.length - n))
    }
    go(seq, Seq[Seq[Int]]())
  }

  def reverseOdd(seq: Seq[Seq[Int]]): Seq[Seq[Int]] = {
    def go(i: Int, s: Seq[Seq[Int]], result: Seq[Seq[Int]]): Seq[Seq[Int]] = {
      if (s.length == 0) result
      else if (i % 2 == 0) go(i+1, s.tail, result :+ s.head)
      else go(i+1, s.tail, result :+ s.head.reverse)
    }
    go(0, seq, Seq[Seq[Int]]())
  }
}