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.*;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        List<Data> D = new ArrayList<Data>();
        int n = sc.nextInt();
        for(int i = 0 ; i < n ; i++){
            long v = sc.nextLong();
            long w = sc.nextLong();
            char t = sc.next().charAt(0);
            long d = sc.nextLong();
            String s = sc.next();
            D.add(new Data(v,w,t,d,s));
        }
        Collections.sort(D);
        Iterator<Data> it = D.iterator();
        while(it.hasNext()){
            Data a = it.next();
            a.print();
        }
    }
}
class Data implements Comparable<Data>{
    long v;
    long w;
    char t;
    long d;
    String s;
    Data(long v, long w, char t, long d, String s){
        this.v = v;
        this.w = w;
        this.t = t;
        this.d = d;
        this.s = s;
    }
    public void print(){
        System.out.println(v + " " + w + " " + t + " " + d + " " + s);
    }
    public int compareTo(Data x){
        if(v < x.v)
            return -1;
        else if(v == x.v){
            if(w < x.w)
                return -1;
            else if(w == x.w){
                if(t < x.t)
                    return -1;
                else if(t == x.t){
                    if(d < x.d)
                        return -1;
                    else if(d == x.d){
                        return s.compareTo(x.s);
                    }
                    else
                        return 1;
                }
                else
                    return 1;
            }
            else
                return 1;
        }
        else
            return 1;
    }
}