Problem:
Sorting Tuples

Write a program which reads $n$ items and sorts them. Each item has attributes $\{value, weight, type, date, name\}$ and they are represented by $\{$ integer, integer, upper-case letter, integer, string $\}$ respectively. Sort the items based on the following priorities.

first by value (ascending)

in case of a tie, by weight (ascending)

in case of a tie, by type (ascending in lexicographic order)

in case of a tie, by date (ascending)

in case of a tie, by name (ascending in lexicographic order)

Input

The input is given in the following format.

$n$
$v_0 \; w_0 \; t_0 \; d_0 \; s_0$
$v_1 \; w_1 \; t_1 \; d_1 \; s_1$
:
$v_{n-1} \; w_{n-1} \; t_{n-1} \; d_{n-1} \; s_{n-1}$

In the first line, the number of items $n$. In the following $n$ lines, attributes of each item are given. $v_i \; w_i \; t_i \; d_i \; s_i$ represent value, weight, type, date and name of the $i$-th item respectively.

Output

Print attributes of each item in order. Print an item in a line and adjacency attributes should be separated by a single space.

Constraints

$1 \leq n \leq 100,000$

$0 \leq v_i \leq 1,000,000,000$

$0 \leq w_i \leq 1,000,000,000$

$t_i$ is a upper-case letter

$0 \leq d_i \leq 2,000,000,000,000$

$1 \leq $ size of $s_i \leq 20$

$s_i \ne s_j$ if $(i \ne j)$

Sample Input 1

5
105 24 C 1500000000000 white
100 23 C 1500000000000 blue
105 23 A 1480000000000 pink
110 25 B 1500000000000 black
110 20 A 1300000000000 gree

Sample Output 1

100 23 C 1500000000000 blue
105 23 A 1480000000000 pink
105 24 C 1500000000000 white
110 20 A 1300000000000 gree
110 25 B 1500000000000 black

Solution in JAVA (judge verdict: Accepted)

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner src = new Scanner(System.in);
		
		int n=Integer.parseInt(src.next());

		List<Contents> list = new ArrayList<>();

		for (int i=0; i<n; i++) {
			int value = Integer.parseInt(src.next());
			int weight = Integer.parseInt(src.next());
			char type = src.next().charAt(0);
			long time = Long.parseLong(src.next());
			String name = src.next();
			
			list.add(new Contents(value, weight, type, time, name));
		}

		list.sort(Comparator.comparingInt(Contents :: getX)
				.thenComparingInt(Contents :: getY)
				.thenComparing(Contents :: getX2)
				.thenComparingLong(Contents :: getZ)
				.thenComparing(Contents :: getY2));

		for(int i=0; i<n; i++) {

			System.out.println(list.get(i).x + " " + list.get(i).y + " " + list.get(i).x2 + " " + list.get(i).z + " " + list.get(i).y2);

		}

	}
}

class Contents{

	int x, y;
	long z;
	char x2;
	String y2;

	Contents(int a, int b, char c, long d, String e){

		x = a;
		y = b;
		z = d;
		x2 = c;
		y2 = e;

	}

	int getX() {
		return x;
	}

	int getY() {
		return y;
	}
	
	long getZ() {
		return z;
	}
	
	char getX2() {
		return x2;
	}
	
	String getY2() {
		return y2;
	}
}