import Data.Array numOfOne 0 = 0 numOfOne n = mod n 2 + numOfOne (div n 2) prev i = i - numOfOne i next i = i + numOfOne i type Board = Array Int Int update :: Board -> Board update b = foldl update' b [first..last] where (first,last) = bounds b update' b' i = let b'' = if prev i >= first && b!i+1 < b'!prev i then b'//[(prev i,b!i+1)] else b' b''' = if next i <= last && b!i+1 < b''!next i then b''//[(next i,b!i+1)] else b'' in b''' main = do n <- fmap read getLine let b = (listArray (1,n) $ repeat (n+1))//[(1,1)] b' = (iterate update b)!!(n-1) putStrLn . show $ if b'!n < n+1 then b'!n else -1