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 JavaScript (node.js v5.12) (judge verdict: Accepted)

function Main(input) {
	input = input.split("\n");
	var tmp = input[0].split(" ");
    var N = parseInt(tmp[0], 10);
    var M = parseInt(tmp[1], 10);
    var inputArray = getInputArray(input,N,M);
    sortEachCol(inputArray);
    setCode2InputArray(inputArray);
    sortEachColIndex(inputArray);
	for(var i=0;i<inputArray.length;i++){
        console.log(zeroPaddingSixDigit(inputArray[i].p) + zeroPaddingSixDigit(inputArray[i].code));
    }
}

function setCode2InputArray(inputArraySorted){
    var indexArray = new Array(inputArraySorted.length);
    inputArraySorted.forEach(function(element) {
        var p = element.p;
        indexArray[p] = indexArray[p] === undefined?0:indexArray[p]+1;
        element.code = indexArray[p] + 1;
    });
}
function sortEachCol(inputArray){
    inputArray.sort(function(a,b){
        return a.value - b.value;
    });
}
function sortEachColIndex(inputArray){
    inputArray.sort(function(a,b){
        return a.index - b.index;
    });
}

function getInputArray(input,N,M){
    var inputArray = [];
    for(var i=0;i<M;i++){
	    var tmp = input[i+1].split(" ");
        if(tmp.length !== 2){
            continue;
        }
        var p = parseInt(tmp[0],10);
        var value = parseInt(tmp[1],10);
        inputArray.push({index:i,value:value,p:p});
    }
    return inputArray;
}

function zeroPaddingSixDigit(num){
    return ('000000' + num).slice(-6)
}

Main(require("fs").readFileSync("/dev/stdin", "utf8"));