module Main where import Control.Monad import Control.Applicative import Data.Maybe import Data.List import qualified Text.Printf import qualified Data.ByteString.Char8 as BC import qualified Data.ByteString as BC import Data.Array.Unboxed (UArray, (!)) import qualified Data.Array.Unboxed as UArray import Debug.Trace ------------------------------------------ main :: IO () main = do n <- readInt ss <- reverse <$> readInts ts <- readInts let pl = UArray.array (1, n) $ zip ts [1..] res = sort $ solve (n+1) ss pl mapM_ print res solve :: Int -> [Int] -> UArray Int Int -> [Int] solve ub ss pl = f ub ss where f _ [] = [] f ub (x:xs') = let place = pl ! x in if pl ! x < ub then x : f (pl ! x) xs' else f ub xs' ------------------------------------------ {- Int input -} parseInt :: BC.ByteString -> Int parseInt = fst . fromJust . BC.readInt parseInts :: BC.ByteString -> [Int] parseInts = map parseInt <$> BC.words readInt :: IO Int readInt = parseInt <$> BC.getLine readInts :: IO [Int] readInts = parseInts <$> BC.getLine {- Double Formatting -} doubleFmt :: Double -> String doubleFmt = Text.Printf.printf "%.12f"