import Control.Applicative ((<$>), (<*>)) import Data.ByteString.Char8 (ByteString) import qualified Data.ByteString.Char8 as B import Data.List (unfoldr) import Data.Char (isSpace) import Data.IntMap (IntMap, (!)) import qualified Data.IntMap as IM main :: IO () main = solve <$> readLn <*> (readil B.readInt <$> B.getLine) >>= print solve :: Int -> [Int] -> Int solve n xs = f (db ! n) (n - 1) where db = IM.fromList $ zip xs [1..] f _ 0 = 0 f i m = if mi < i then f mi (m - 1) else m where mi = db ! m readil :: Integral a => (ByteString -> Maybe (a, ByteString)) -> ByteString -> [a] readil f = unfoldr g where g s = do (n, s') <- f s return (n, B.dropWhile isSpace s')