fun readInt () = valOf (TextIO.scanStream (Int.scan StringCvt.DEC) TextIO.stdIn) exception WrongMonth fun intToMonth 1 = Date.Jan | intToMonth 2 = Date.Feb | intToMonth 3 = Date.Mar | intToMonth 4 = Date.Apr | intToMonth 5 = Date.May | intToMonth 6 = Date.Jun | intToMonth 7 = Date.Jul | intToMonth 8 = Date.Aug | intToMonth 9 = Date.Sep | intToMonth 10 = Date.Oct | intToMonth 11 = Date.Nov | intToMonth 12 = Date.Dec | intToMonth _ = raise WrongMonth fun readDate () = let val y = readInt () val _ = TextIO.scanStream Char.scan TextIO.stdIn (* skip #"/" *) val m = readInt () val _ = TextIO.scanStream Char.scan TextIO.stdIn (* skip #"/" *) val d = readInt () in Date.date {year = y, month = intToMonth m, day = d, hour = 0, minute = 0, second = 0, offset = SOME(Time.zeroTime)} end fun findAns t = if Date.compare (t, Date.date {year = 1989, month = Date.Jan, day = 8, hour = 0, minute = 0, second = 0, offset = SOME(Time.zeroTime)}) = LESS then "No" else if Date.compare (t, Date.date {year = 2019, month = Date.Apr, day = 30, hour = 0, minute = 0, second = 0, offset = SOME(Time.zeroTime)}) = GREATER then "No" else "Yes" val () = let val t = readDate () val ans = findAns t in print (ans ^ "\n") end