package main

import (
    "fmt"
)

type Node struct {
    name string
    num int
}

func main() {
    var n, op int
    fmt.Scanf("%d", &n)
    fmt.Scanf("%d", &op)
    var k = make([]Node, n)
    for i:=0;i<n;i++{
        fmt.Scanf("%s %d", &k[i].name, &k[i].num)
    }
    if n == 1{
        fmt.Println(k[0].name, k[0].num)
        return
    }

    // 插入排序
    var t  Node
    var i,j int
    if op == 1{ // 升序
        for i=1;i<n;i++{
            t = k[i]
            for j = i-1;j>=0;j--{
                if k[j].num > t.num{
                    k[j+1] = k[j]
                }else{
                    break
                }
            }
            k[j+1] = t
        }

    }else{ // 降序
        for i=1;i<n;i++{
            t = k[i]
            for j = i-1;j>=0;j--{
                if k[j].num < t.num{
                    k[j+1] = k[j]
                }else{
                    break
                }
            }
            k[j+1] = t
        }
    }
    for i:=0;i<n;i++{
        fmt.Println(k[i].name, k[i].num)
    }
}