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

public class Main {
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);

        while(in.hasNext()){
            solution1(in);
            // solution2(in);
            // solution3(in);
            // solution4(in);
            // solution5(in);
        }
    }

    /**
     * List.sort() - lambda
     * @param in
     */
    private static void solution1(Scanner in){
        int N = in.nextInt();
        int sort = in.nextInt();

        List<Student> studentList = new ArrayList<>();
        for(int i=1; i<=N; i++){
            String name = in.next();
            Integer score = in.nextInt();
            studentList.add(new Student(name, score));
        }

        // desc - default stable
        if(sort == 0){
            studentList.sort((o1, o2) -> o2.getScore() - o1.getScore());
        }
        // asc - default stable
        else if(sort == 1){
            studentList.sort((o1, o2) -> o1.getScore() - o2.getScore());
        }

        for(Student student: studentList){
            System.out.println(student.toString());
        }
    }

    /**
     * List.sort() - Comparator.comparingInt()
     * @param in
     */
    private static void solution2(Scanner in){
        int N = in.nextInt();
        int sort = in.nextInt();

        List<Student> studentList = new ArrayList<>();
        for(int i=1; i<=N; i++){
            String name = in.next();
            Integer score = in.nextInt();
            studentList.add(new Student(name, score));
        }

        // desc - default stable
        if(sort == 0){
            studentList.sort(Comparator.comparingInt(Student::getScore).reversed());
        }
        // asc - default stable
        else if(sort == 1){
            studentList.sort(Comparator.comparingInt(Student::getScore));
        }

        for(Student student: studentList){
            System.out.println(student.toString());
        }
    }

    /**
     * List.sort() - List.stream().sorted(Comparator.comparing()).collect()
     * @param in
     */
    private static void solution3(Scanner in){
        int N = in.nextInt();
        int sort = in.nextInt();

        List<Student> studentList = new ArrayList<>();
        for(int i=1; i<=N; i++){
            String name = in.next();
            Integer score = in.nextInt();
            studentList.add(new Student(name, score));
        }

        // desc - default stable
        if(sort == 0){
            studentList = studentList.stream().sorted(Comparator.comparing(Student::getScore).reversed()).collect(Collectors.toList());
        }
        // asc - default stable
        else if(sort == 1){
            studentList = studentList.stream().sorted(Comparator.comparing(Student::getScore)).collect(Collectors.toList());
        }

        for(Student student: studentList){
            System.out.println(student.toString());
        }
    }

    /**
     * List.sort() - Comparator<Student>
     * @param in
     */
    private static void solution4(Scanner in){
        int N = in.nextInt();
        int sort = in.nextInt();

        List<Student> studentList = new ArrayList<>();
        for(int i=1; i<=N; i++){
            String name = in.next();
            Integer score = in.nextInt();
            studentList.add(new Student(name, score));
        }

        // desc - default stable
        if(sort == 0){
            studentList.sort(new Comparator<Student>(){
                @Override
                public int compare(Student o1, Student o2){
                    return o2.getScore() - o1.getScore();
                }
            });
        }
        // asc - default stable
        else if(sort == 1){
            studentList.sort(new Comparator<Student>(){
                @Override
                public int compare(Student o1, Student o2){
                    return o1.getScore() - o2.getScore();
                }
            });
        }

        for(Student student: studentList){
            System.out.println(student.toString());
        }
    }

    /**
     * List.sort() - Student.INCREASE & Student.DECREASE
     * @param in
     */
    private static void solution5(Scanner in){
        int N = in.nextInt();
        int sort = in.nextInt();

        List<Student> studentList = new ArrayList<>();
        for(int i=1; i<=N; i++){
            String name = in.next();
            Integer score = in.nextInt();
            studentList.add(new Student(name, score));
        }

        // desc - default stable
        if(sort == 0){
            studentList.sort(Student.DECREASE);
        }
        // asc - default stable
        else if(sort == 1){
            studentList.sort(Student.INCREASE);
        }

        for(Student student: studentList){
            System.out.println(student.toString());
        }
    }

    private static class Student {
        private String name;
        private Integer score;

        private static final Comparator<Student> INCREASE = new increase();
        private static final Comparator<Student> DECREASE = new decrease();

        public String getName(){
            return name;
        }

        public Integer getScore(){
            return score;
        }

        public Student(String name, Integer score){
            this.name = name;
            this.score = score;
        }

        public static class increase implements Comparator<Student>{
            @Override
            public int compare(Student o1, Student o2){
                return o1.getScore() - o2.getScore();
            }
        }

        public static class decrease implements Comparator<Student>{
            @Override
            public int compare(Student o1, Student o2){
                return o2.getScore() - o1.getScore();
            }
        }

        @Override
        public String toString(){
            return name + " " + score;
        }
    }
}