Problem:
Score : 100 points

Problem Statement

You are given a three-digit positive integer N.

Determine whether N is a palindromic number.

Here, a palindromic number is an integer that reads the same backward as forward in decimal notation.

Constraints

100≤N≤999

N is an integer.

Input

Input is given from Standard Input in the following format:

N

Output

If N is a palindromic number, print Yes; otherwise, print No.

Sample Input 1

575

Sample Output 1

Yes

N=575 is also 575 when read backward, so it is a palindromic number. You should print Yes.

Sample Input 2

123

Sample Output 2

No

N=123 becomes 321 when read backward, so it is not a palindromic number. You should print No.

Sample Input 3

812

Sample Output 3

No

Solution in Haskell (GHC 7.10.3) (judge verdict: Accepted)

{-# LANGUAGE BangPatterns #-}

import           Control.Monad
import           Control.Monad.Trans.State
import qualified Data.ByteString.Unsafe    as B
import qualified Data.ByteString.Char8     as C8
import           Data.Bits
import           Data.Char
import           Data.List
import           Data.Maybe

main :: IO ()
main = do
  [n] <- readInts
  putStrLn $ solve n

solve :: Int -> String
solve = pretty . cmp . show

cmp :: String -> Bool
cmp cs = (cs !! 0) == cs !! 2

pretty :: Bool -> String
pretty b = if b then "Yes" else "No"

-- utils
type Pair = (Int, Int)

readInts :: IO [Int]
readInts = map (fst . fromJust . C8.readInt) . C8.words <$> C8.getLine

readPair :: IO Pair
readPair = head . unfoldr readT <$> C8.getLine
  where
    readT = runStateT $
      (,) <$> StateT (C8.readInt . C8.dropWhile isSpace)
          <*> StateT (C8.readInt . B.unsafeTail)