Problem:
A - 旧総合研究７号館

時は平成50年春休み．情報学研究科に所属する京子さんは，京都にある某研究パークからの研究室の引越しがやっと終わり，ホッと一息ついていた．
今回の引越しは，古くなった校舎の改修工事によるもので，新年度から工事に伴い校舎の名前が変更されることになっている．

ホッとしていたのもつかの間，京子さんは先生から大学の資料に載っている校舎名を新しい名前に変更するお仕事を頼まれてしまった．
しかし編集しなければならない資料には，今までの担当者が仕事を怠っていたせいか，ひとつ古い名前よりもっと古い名前が使われているものもあった．

なんとか京子さんは，平成の間に校舎が改名が行われた年度とその名前のリストを見つけることができた．平成元年度の校舎名は "kogakubu10gokan" であった．

だが引越し作業にとても疲れたので，その資料が作られた年度にこの校舎がどんな名前だったのかを自分の手で調べるのには我慢ならなかった．

そこで京子さんは，プログラミングが得意なあなたに手伝ってとお願いすることにした．

改名の歴史と資料が作られた年度が与えられるのでその年度の校舎の名前を出力するプログラミングを書いてあげよう．

入力形式

入力は以下の形式で与えられる．

N Q
year1 name1
year2 name2
…
yearN nameN

N は平成2年度から平成50年度までに行われた改名と改名された年度の組の個数であり，Q は資料が作られた年度を表す．

yeari は改名が行われた年度であり，namei は改名された名前をあらわす．

出力形式

平成Q年度の校舎の名前を出力せよ．

制約

1 ≤ N < 50

1 ≤ Q < 50

2 ≤ year1 < year2 < … < yearn ≤ 50

すべての i に対して，namei は長さ1以上30以下で含まれる文字は英数字('a'-'z', 'A'-'Z', '0'-'9') である．

平成元年度の校舎の名前は，"kogakubu10gokan" である．

入出力例

入力例 1

3 12
5 sogo5gokan
10 sogo10gokan
15 sogo15gokan

出力例 1

sogo10gokan

平成12年度の校舎名を出力すればよい．

校舎は，平成元年度の kogakubu10gokan から始まり，平成5年度に sogo5gokan， 平成10年度に sogo10gokan および平成15年度に sogo15gokan に改名されている．

入力例 2

3 10
5 kogakubu11gokan
10 sogo10gokan
15 KyotoUniversityResearchPark

出力例 2

sogo10gokan

平成10年度の校舎名を出力すればよい．

校舎は，平成10年度に sogo10gokan に改名されている．

入力例 3

3 3
5 kogakubu11gokan
10 sogo10gokan
15 KyotoUniversityResearchPark

出力例 3

kogakubu10gokan

平成3年度の校舎名を出力すればよい．

平成元年度から平成4年度までの校舎の名前は "kogakubu10gokan" である．

Solution in Scala (judge verdict: Accepted)

import java.util.Scanner

import scala.collection.Searching._
import scala.annotation.tailrec
import scala.collection.immutable.Queue

class IUnionFind(val size: Int) {

  private case class Node(var parent: Option[Int], var treeSize: Int)

  private val nodes = Array.fill[Node](size)(new Node(None, 1))

  def union(t1: Int, t2: Int): IUnionFind = {
    if (t1 == t2) return this

    val root1 = root(t1)
    val root2 = root(t2)
    if (root1 == root2) return this

    val node1 = nodes(root1)
    val node2 = nodes(root2)

    if (node1.treeSize < node2.treeSize) {
      node1.parent = Some(t2)
      node2.treeSize += node1.treeSize
    } else {
      node2.parent = Some(t1)
      node1.treeSize += node2.treeSize
    }
    this
  }

  def connected(t1: Int, t2: Int): Boolean = t1 == t2 || root(t1) == root(t2)

  @tailrec
  private def root(t: Int): Int = nodes(t).parent match {
    case None => t
    case Some(p) => root(p)
  }
}


object Main {
  def solve(sc: => Scanner): Unit = {
    val N, Q = sc.nextInt
    val A = Array.fill(N)((sc.nextInt, sc.next)).reverse.dropWhile(X => X._1 > Q)
    if (A.length == 0) {
      println("kogakubu10gokan")
    } else {
      println(A(0)._2)
    }
  }

  def main(args: Array[String]): Unit = {
    val sc: Scanner = new Scanner(System.in)
    solve(sc)
  }
}