Language: C++

-- extension section
{-# OPTIONS_GHC -O2 -funbox-strict-fields #-}
{-# LANGUAGE BangPatterns      #-}
{-# LANGUAGE CPP               #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TupleSections     #-}
{-# LANGUAGE Unsafe #-} --for large int
 -- not supported extension
--{-# LANGUAGE Strict, StrictData #-}


module Main where

-- @@@@@@@@@@@@@@@@@--
-- import section   --
-- @@@@@@@@@@@@@@@@@--
--    import A.B.C( function name )  ...
-- or import A.B.C 

--
import           Prelude hiding(
  getLine,
  getContents,
  lines,
  words
  )

-- standard library
import           Control.Monad.ST
import           Control.Applicative
import           Data.Char


-- bytestring
import qualified Data.ByteString.Char8       as B
import qualified Data.ByteString.Unsafe      as B


-- containers
import qualified Data.IntMap.Strict as M

-- deepseq


-- regex-posix


-- text
import           Data.Text.Lazy.IO as TIO
import           Data.Text.Lazy as T
import           Data.Text.Lazy.Read as TR

-- import Data.Text.IO as TIO
-- import Data.Text as T
-- import Data.Text.Read as TR



-- unordered-containers


-- vectors
import           Data.Vector.Unboxed as UV
import           Data.Vector.Unboxed.Mutable as MV


-- mtl


-- @@@@@@@@@@@@@@@@@--
-- main section     --
-- @@@@@@@@@@@@@@@@@--

main :: IO ()
main = do
  input <- getInput
  Prelude.putStr . show . getAnswer $ input 

-- main :: IO()
-- main = do
--   answer <- getInputandanser
--   putStr . show $ answer


-- @@@@@@@@@@@@@@@@@@@@@--
-- I/O DataType section --
-- @@@@@@@@@@@@@@@@@@@@@--
data Input = I (Int,Vector Int)
  deriving(Show)

type Answer = Int



-- @@@@@@@@@@@@@@@@@--
-- answerSection    --
-- @@@@@@@@@@@@@@@@@--
getInput :: IO Input
getInput = do
  n <- (!0) <$> intVectorFromLine 1
  v <- generateIntVectorFromLines n
  return (I (n,v))

getAnswer :: Input -> Answer 
getAnswer (I (n,v)) = M.foldl' f 0 $ go M.empty 0

  where go m n' | n' == (n-1) = M.alter ad (v!n') m
                | otherwise = go (M.alter ad (v!n') m) (n'+1)
          where ad Nothing = Just True
                ad (Just b) = Just $! not b
        f !a True =  a+1
        f !a False = a
-- getAnswer :: Input -> Answer 
-- getAnswer (I (n,v)) = UV.length $ UV.filter (== True)  $ runST $ do
--   mv <- MV.replicate (10^9::Int) False
--   go mv 0 
--   where go array n' | n' == (n-1) = do
--                         MV.modify array (not) (v!n' - 1)
--                         unsafeFreeze array                       
--                     | otherwise = do
--                         MV.modify array (not) (v!n' - 1)
--                         go array (n'+1) 



getInputAndAnser :: IO Answer
getInputAndAnser = undefined


-- @@@@@@@@@@@@@@@@@@@@@@@@@@--
-- question unique section    --
-- @@@@@@@@@@@@@@@@@@@@@@@@@@--





-- @@@@@@@@@@@@@@@@@--
-- util section     --
-- @@@@@@@@@@@@@@@@@--

-- standard Input Function
gLine :: IO Text
gLine = getLine

gContents :: IO Text
gContents = getContents

-- intVectorFromline 5  ("1 2 3 4 5") -> vector <1,2,3,4,5> 
intVectorFromLine ::Int -> IO ( Vector Int )
intVectorFromLine n = UV.unfoldrN n (B.readInt.B.dropWhile isSpace) <$> B.getLine

pairFromLine :: IO (Int,Int)
pairFromLine = do
  v <- intVectorFromLine 2
  return ( v ! 0, v ! 1)

intFromLine :: IO Int
intFromLine = do
  (! 0) <$> (intVectorFromLine 1) 
  
generatePairVectorFromLine :: Int -> IO ( Vector (Int, Int) )
generatePairVectorFromLine n = generateM n (const pairFromLine)

generateIntVectorFromLines :: Int -> IO (Vector Int)
generateIntVectorFromLines n = generateM n (const intFromLine )


Compiler output:
a.cc:2:3: error: stray '#' in program
    2 | {-# OPTIONS_GHC -O2 -funbox-strict-fields #-}
      |   ^
a.cc:2:43: error: stray '#' in program
    2 | {-# OPTIONS_GHC -O2 -funbox-strict-fields #-}
      |                                           ^
a.cc:3:3: error: stray '#' in program
    3 | {-# LANGUAGE BangPatterns      #-}
      |   ^
a.cc:3:32: error: stray '#' in program
    3 | {-# LANGUAGE BangPatterns      #-}
      |                                ^
a.cc:4:3: error: stray '#' in program
    4 | {-# LANGUAGE CPP               #-}
      |   ^
a.cc:4:32: error: stray '#' in program
    4 | {-# LANGUAGE CPP               #-}
      |                                ^
a.cc:5:3: error: stray '#' in program
    5 | {-# LANGUAGE OverloadedStrings #-}
      |   ^
a.cc:5:32: error: stray '#' in program
    5 | {-# LANGUAGE OverloadedStrings #-}
      |                                ^
a.cc:6:3: error: stray '#' in program
    6 | {-# LANGUAGE TupleSections     #-}
      |   ^
a.cc:6:32: error: stray '#' in program
    6 | {-# LANGUAGE TupleSections     #-}
      |                                ^
a.cc:7:3: error: stray '#' in program
    7 | {-# LANGUAGE Unsafe #-} --for large int
      |   ^
a.cc:7:21: error: stray '#' in program
    7 | {-# LANGUAGE Unsafe #-} --for large int
      |                     ^
a.cc:9:5: error: stray '#' in program
    9 | --{-# LANGUAGE Strict, StrictData #-}
      |     ^
a.cc:9:35: error: stray '#' in program
    9 | --{-# LANGUAGE Strict, StrictData #-}
      |                                   ^
a.cc:14:4: error: stray '@' in program
   14 | -- @@@@@@@@@@@@@@@@@--
      |    ^
a.cc:14:5: error: stray '@' in program
   14 | -- @@@@@@@@@@@@@@@@@--
      |     ^
a.cc:14:6: error: stray '@' in program
   14 | -- @@@@@@@@@@@@@@@@@--
      |      ^
a.cc:14:7: error: stray '@' in program
   14 | -- @@@@@@@@@@@@@@@@@--
      |       ^
a.cc:14:8: error: stray '@' in program
   14 | -- @@@@@@@@@@@@@@@@@--
      |        ^
a.cc:14:9: error: stray '@' in program
   14 | -- @@@@@@@@@@@@@@@@@--
      |         ^
a.cc:14:10: error: stray '@' in program
   14 | -- @@@@@@@@@@@@@@@@@--
      |          ^
a.cc:14:11: error: stray '@' in program
   14 | -- @@@@@@@@@@@@@@@@@--
      |           ^
a.cc:14:12: error: stray '@' in program
   14 | -- @@@@@@@@@@@@@@@@@--
      |            ^
a.cc:14:13: error: stray '@' in program
   14 | -- @@@@@@@@@@@@@@@@@--
      |             ^
a.cc:14:14: error: stray '@' in program
   14 | -- @@@@@@@@@@@@@@@@@--
      |              ^
a.cc:14:15: error: stray '@' in program
   14 | -- @@@@@@@@@@@@@@@@@--
      |               ^
a.cc:14:16: error: stray '@' in program
   14 | -- @@@@@@@@@@@@@@@@@--
      |                ^
a.cc:14:17: error: stray '@' in program
   14 | -- @@@@@@@@@@@@@@@@@--
      |                 ^
a.cc:14:18: error: stray '@' in program
   14 | -- @@@@@@@@@@@@@@@@@--
      |                  ^
a.cc:14:19: error: stray '@' in program
   14 | -- @@@@@@@@@@@@@@@@@--
      |                   ^
a.cc:14:20: error: stray '@' in program
   14 | -- @@@@@@@@@@@@@@@@@--
      |                    ^
a.cc:16:4: error: stray '@' in program
   16 | -- @@@@@@@@@@@@@@@@@--
      |    ^
a.cc:16:5: error: stray '@' in program
   16 | -- @@@@@@@@@@@@@@@@@--
      |     ^
a.cc:16:6: error: stray '@' in program
   16 | -- @@@@@@@@@@@@@@@@@--
      |      ^
a.cc:16:7: error: stray '@' in program
   16 | -- @@@@@@@@@@@@@@@@@--
      |       ^
a.cc:16:8: error: stray '@' in program
   16 | -- @@@@@@@@@@@@@@@@@--
      |        ^
a.cc:16:9: error: stray '@' in program
   16 | -- @@@@@@@@@@@@@@@@@--
      |         ^
a.cc:16:10: error: stray '@' in program
   16 | -- @@@@@@@@@@@@@@@@@--
      |          ^
a.cc:16:11: error: stray '@' in program
   16 | -- @@@@@@@@@@@@@@@@@--
      |           ^
a.cc:16:12: error: stray '@' in program
   16 | -- @@@@@@@@@@@@@@@@@--
      |            ^
a.cc:16:13: error: stray '@' in program
   16 | -- @@@@@@@@@@@@@@@@@--
      |             ^
a.cc:16:14: error: stray '@' in program
   16 | -- @@@@@@@@@@@@@@@@@--
      |              ^
a.cc:16:15: error: stray '@' in program
   16 | -- @@@@@@@@@@@@@@@@@--
      |               ^
a.cc:16:16: error: stray '@' in program
   16 | -- @@@@@@@@@@@@@@@@@--
      |                ^
a.cc:16:17: error: stray '@' in program
   16 | -- @@@@@@@@@@@@@@@@@--
      |                 ^
a.cc:16:18: error: stray '@' in program
   16 | -- @@@@@@@@@@@@@@@@@--
      |                  ^
a.cc:16:19: error: stray '@' in program
   16 | -- @@@@@@@@@@@@@@@@@--
      |                   ^
a.cc:16:20: error: stray '@' in program
   16 | -- @@@@@@@@@@@@@@@@@--
      |                    ^
a.cc:70:4: error: stray '@' in program
   70 | -- @@@@@@@@@@@@@@@@@--
      |    ^
a.cc:70:5: error: stray '@' in program
   70 | -- @@@@@@@@@@@@@@@@@--
      |     ^
a.cc:70:6: error: stray '@' in program
   70 | -- @@@@@@@@@@@@@@@@@--
      |      ^
a.cc:70:7: error: stray '@' in program
   70 | -- @@@@@@@@@@@@@@@@@--
      |       ^
a.cc:70:8: error: stray '@' in program
   70 | -- @@@@@@@@@@@@@@@@@--
      |        ^
a.cc:70:9: error: stray '@' in program
   70 | -- @@@@@@@@@@@@@@@@@--
      |         ^
a.cc:70:10: error: stray '@' in program
   70 | -- @@@@@@@@@@@@@@@@@--
      |          ^
a.cc:70:11: error: stray '@' in program
   70 | -- @@@@@@@@@@@@@@@@@--
      |           ^
a.cc:70:12: error: stray '@' in program
   70 | -- @@@@@@@@@@@@@@@@@--
      |            ^
a.cc:70:13: error: stray '@' in program
   70 | -- @@@@@@@@@@@@@@@@@--
      |             ^
a.cc:70:14: error: stray '@' in program
   70 | -- @@@@@@@@@@@@@@@@@--
      |              ^
a.cc:70:15: error: stray '@' in program
   70 | -- @@@@@@@@@@@@@@@@@--
      |               ^
a.cc:70:16: error: stray '@' in program
   70 | -- @@@@@@@@@@@@@@@@@--
      |                ^
a.cc:70:17: error: stray '@' in program
   70 | -- @@@@@@@@@@@@@@@@@--
      |                 ^
a.cc:70:18: error: stray '@' in program
   70 | -- @@@@@@@@@@@@@@@@@--
      |                  ^
a.cc:70:19: error: stray '@' in program
   70 | -- @@@@@@@@@@@@@@@@@--
      |                   ^
a.cc:70:20: error: stray '@' in program
   70 | -- @@@@@@@@@@@@@@@@@--
      |                    ^
a.cc:72:4: error: stray '@' in program
   72 | -- @@@@@@@@@@@@@@@@@--
      |    ^
a.cc:72:5: error: stray '@' in program
   72 | -- @@@@@@@@@@@@@@@@@--
      |     ^
a.cc:72:6: error: stray '@' in program
   72 | -- @@@@@@@@@@@@@@@@@--
      |      ^
a.cc:72:7: error: stray '@' in program
   72 | -- @@@@@@@@@@@@@@@@@--
      |       ^
a.cc:72:8: error: stray '@' in program
   72 | -- @@@@@@@@@@@@@@@@@--
      |        ^
a.cc:72:9: error: stray '@' in program
   72 | -- @@@@@@@@@@@@@@@@@--
      |         ^
a.cc:72:10: error: stray '@' in program
   72 | -- @@@@@@@@@@@@@@@@@--
      |          ^
a.cc:72:11: error: stray '@' in program
   72 | -- @@@@@@@@@@@@@@@@@--
      |           ^
a.cc:72:12: error: stray '@' in program
   72 | -- @@@@@@@@@@@@@@@@@--
      |            ^
a.cc:72:13: error: stray '@' in program
   72 | -- @@@@@@@@@@@@@@@@@--
      |             ^
a.cc:72:14: error: stray '@' in program
   72 | -- @@@@@@@@@@@@@@@@@--
      |              ^
a.cc:72:15: error: stray '@' in program
   72 | -- @@@@@@@@@@@@@@@@@--
      |               ^
a.cc:72:16: error: stray '@' in program
   72 | -- @@@@@@@@@@@@@@@@@--
      |                ^
a.cc:72:17: error: stray '@' in program
   72 | -- @@@@@@@@@@@@@@@@@--
      |                 ^
a.cc:72:18: error: stray '@' in program
   72 | -- @@@@@@@@@@@@@@@@@--
      |                  ^
a.cc:72:19: error: stray '@' in program
   72 | -- @@@@@@@@@@@@@@@@@--
      |                   ^
a.cc:72:20: error: stray '@' in program
   72 | -- @@@@@@@@@@@@@@@@@--
      |                    ^
a.cc:85:4: error: stray '@' in program
   85 | -- @@@@@@@@@@@@@@@@@@@@@--
      |    ^
a.cc:85:5: error: stray '@' in program
   85 | -- @@@@@@@@@@@@@@@@@@@@@--
      |     ^
a.cc:85:6: error: stray '@' in program
   85 | -- @@@@@@@@@@@@@@@@@@@@@--
      |      ^
a.cc:85:7: error: stray '@' in program
   85 | -- @@@@@@@@@@@@@@@@@@@@@--
      |       ^
a.cc:85:8: error: stray '@' in program
   85 | -- @@@@@@@@@@@@@@@@@@@@@--
      |        ^
a.cc:85:9: error: stray '@' in program
   85 | -- @@@@@@@@@@@@@@@@@@@@@--
      |         ^
a.cc:85:10: error: stray '@' in program
   85 | -- @@@@@@@@@@@@@@@@@@@@@--
      |          ^
a.cc:85:11: error: stray '@' in program
   85 | -- @@@@@@@@@@@@@@@@@@@@@--
      |           ^
a.cc:85:12: error: stray '@' in program
   85 | -- @@@@@@@@@@@@@@@@@@@@@--
      |            ^
a.cc:85:13: error: stray '@' in program
   85 | -- @@@@@@@@@@@@@@@@@@@@@--
      |             ^
a.cc:85:14: error: stray '@' in program
   85 | -- @@@@@@@@@@@@@@@@@@@@@--
      |              ^
a.cc:85:15: error: stray '@' in program
   85 | -- @@@@@@@@@@@@@@@@@@@@@--
      |               ^
a.cc:85:16: error: stray '@' in program
   85 | -- @@@@@@@@@@@@@@@@@@@@@--
      |                ^
a.cc:85:17: error: stray '@' in program
   85 | -- @@@@@@@@@@@@@@@@@@@@@--
      |                 ^
a.cc:85:18: error: stray '@' in program
   85 | -- @@@@@@@@@@@@@@@@@@@@@--
      |                  ^
a.cc:85:19: error: stray '@' in program
   85 | -- @@@@@@@@@@@@@@@@@@@@@--
      |                   ^
a.cc:85:20: error: stray '@' in program
   85 | -- @@@@@@@@@@@@@@@@@@@@@--
      |                    ^
a.cc:85:21: error: stray '@' in program
   85 | -- @@@@@@@@@@@@@@@@@@@@@--
      |                     ^
a.cc:85:22: error: stray '@' in program
   85 | -- @@@@@@@@@@@@@@@@@@@@@--
      |                      ^
a.cc:85:23: error: stray '@' in program
   85 | -- @@@@@@@@@@@@@@@@@@@@@--
      |                       ^
a.cc:85:24: error: stray '@' in program
   85 | -- @@@@@@@@@@@@@@@@@@@@@--
      |                        ^
a.cc:87:4: error: stray '@' in program
   87 | -- @@@@@@@@@@@@@@@@@@@@@--
      |    ^
a.cc:87:5: error: stray '@' in program
   87 | -- @@@@@@@@@@@@@@@@@@@@@--
      |     ^
a.cc:87:6: error: stray '@' in program
   87 | -- @@@@@@@@@@@@@@@@@@@@@--
      |      ^
a.cc:87:7: error: stray '@' in program
   87 | -- @@@@@@@@@@@@@@@@@@@@@--
      |       ^
a.cc:87:8: error: stray '@' in program
   87 | -