import Control.Applicative import Data.List import Data.Function import qualified Data.IntMap as IM slide n bs = drop n $ take (n+length bs) $ cycle bs solve :: IM.IntMap Int -> [Int] -> Int solve as bs = minimum $ [iter as $ (slide i bs)|i<-[0..length bs]] where iter a [] = snd $ maximumBy (compare `on` snd) $ IM.assocs a iter a (d:ds) = iter a' ds where Just ((n,c),b') = IM.minViewWithKey $ a a' = IM.insert (n+(d`div`2)) (c+1) b' main = do _ <- getLine as <- fmap (read :: String -> Int) . words <$> getLine bs <- fmap (read :: String -> Int) . words <$> getLine print $ solve (IM.fromList $ zip as [0,0..]) bs