Problem:
Score : 100 points

Problem Statement

You are given three integers A, B and C.
Determine whether C is not less than A and not greater than B.

Constraints

-100≤A,B,C≤100

A, B and C are all integers.

Input

Input is given from Standard Input in the following format:

A B C

Output

If the condition is satisfied, print Yes; otherwise, print No.

Sample Input 1

1 3 2

Sample Output 1

Yes

C=2 is not less than A=1 and not greater than B=3, and thus the output should be Yes.

Sample Input 2

6 5 4

Sample Output 2

No

C=4 is less than A=6, and thus the output should be No.

Sample Input 3

2 2 2

Sample Output 3

Yes

Solution in Haskell (GHC 7.10.3) (judge verdict: Runtime Error)

import Data.List (sort, group)
import Control.Arrow ((&&&))

type City = Int
type Road = (Int, Int)

main :: IO ()
main = do
    [n, m] <- map toInt . words <$> getLine :: IO [Int]
    roads  <- getRoads [1..m]  :: IO [Road]
    print . enumerateCitySRoad [1..n] $ groupRoads roads
    return ()

enumerateCitySRoad :: [City] -> [(City, Int)] -> [Int]
enumerateCitySRoad [] _      = []
enumerateCitySRoad (c:cs) xs = length (filter (\x -> fst x == c) xs) : enumerateCitySRoad cs xs

groupRoads :: [Road] -> [(City, Int)]
groupRoads directedLines =
  howManyRoads . group . sort $ bothDirectionLines
  where
  swapStartEndPoint (a, b) = (b, a)
  inverse = map swapStartEndPoint :: [Road] -> [Road]
  bothDirectionLines = directedLines ++ inverse directedLines :: [Road]
  howManyRoads = map (fst . head &&& length) :: [[Road]] -> [Road]

toInt :: String -> Int 
toInt = read

getRoads :: [Int] -> IO [Road]
getRoads = mapM $ \_ -> do 
                    [x,y] <- map toInt . words <$> getLine
                    return (x, y)