Problem:
Score: 300 points

Problem Statement

In Republic of Atcoder, there are N prefectures, and a total of M cities that belong to those prefectures.

City i is established in year Y_i and belongs to Prefecture P_i.

You can assume that there are no multiple cities that are established in the same year.

It is decided to allocate a 12-digit ID number to each city.

If City i is the x-th established city among the cities that belong to Prefecture i, the first six digits of the ID number of City i is P_i, and the last six digits of the ID number is x.

Here, if P_i or x (or both) has less than six digits, zeros are added to the left until it has six digits.

Find the ID numbers for all the cities.

Note that there can be a prefecture with no cities.

Constraints

1 \leq N \leq 10^5

1 \leq M \leq 10^5

1 \leq P_i \leq N

1 \leq Y_i \leq 10^9

Y_i are all different.

All values in input are integers.

Input

Input is given from Standard Input in the following format:

N M
P_1 Y_1
:
P_M Y_M

Output

Print the ID numbers for all the cities, in ascending order of indices (City 1, City 2, ...).

Sample Input 1

2 3
1 32
2 63
1 12

Sample Output 1

000001000002
000002000001
000001000001

As City 1 is the second established city among the cities that belong to Prefecture 1, its ID number is 000001000002.

As City 2 is the first established city among the cities that belong to Prefecture 2, its ID number is 000002000001.

As City 3 is the first established city among the cities that belong to Prefecture 1, its ID number is 000001000001.

Sample Input 2

2 3
2 55
2 77
2 99

Sample Output 2

000002000001
000002000002
000002000003

Solution in Scala (2.11.7) (judge verdict: Time Limit Exceeded)

object Main extends App {
	private def zeros(yid: String): String = {
		val len = yid.length
		if (len == 0) "000000"
		else if (len == 1) "00000"
		else if (len == 2) "0000"
		else if (len == 3) "000"
		else if (len == 4) "00"
		else if (len == 5) "0" else ""
	}

	private def str(n: Long): String = {
//		val yid = Integer.toString(yindex)
//		val prey = zeros(yid)
//		val pid = Integer.toString(pgr)
//		val prep = zeros(pid)
//		prep + pid + prey + yid

		//TODO overflow?
		val tmp = 1000000000000L + n
		//println(tmp)
		java.lang.Long.toString(tmp).substring(1,13)
	}

	private def func(lines: Seq[String]) {
		val line = lines.tail.zipWithIndex.map { case (e, gi) =>
			val tmp = e.split(' ').map(_.toInt).toArray
			(tmp(0), (tmp(1), gi))
		}
		val idMap = line.indices.map(_ => -1L).toArray
		line.groupBy(_._1).foreach { case (pgr, ylist) =>
			ylist.toSeq.map(_._2).sortBy(_._1).map(_._2).zipWithIndex.foreach { case (gi, yindex) =>
				//val id = "%06d%06d".format(pgr, (yindex + 1))
				//val id = str(pgr, yindex)
				////println(gi, id)
				////idMap = idMap + (gi -> id)
				//idMap(gi) = id

				idMap(gi) = 1000000L * pgr + (yindex + 1)
			}
		}
		val pw = new java.io.PrintWriter(System.out)
		idMap.foreach(e => pw.println(str(e)))
		pw.flush()
	}

//	val start = System.currentTimeMillis()
//	func((0 until 100).map(i => (i % 2) + " " + i))
//	//func((0 until 100).map(i => (i % 1) + " " + -i))
//	func((0 until 100000).map(i => (i % 2) + " " + i))
//	//func((0 until 100000).map(i => (i % 1) + " " + -i))
//	func((0 until 100000).map(i => i + " " + i))
//	println(System.currentTimeMillis() - start)

	func(scala.io.Source.stdin.getLines.toSeq)
}