fun member x nil = false | member x (h::tl) = if x = h then true else member x tl fun readInt () = valOf (TextIO.scanStream (Int.scan StringCvt.DEC) TextIO.stdIn) exception Dummy fun findAnsAux nil _ _ = raise Dummy | findAnsAux _ nil _ = raise Dummy | findAnsAux (h::tl) (dh::dtl) target = if h = target then dh else dh + findAnsAux tl dtl target fun findAns location target = let val mapped = List.map (fn x => x + location) [2, 4, 3, 2, 4, 3, 2] in if member target mapped then findAnsAux mapped [2, 2, 1, 1, 2, 1, 1] target else (2 + 2 + 1 + 1 + 2 + 1 + 1) + findAns (List.last mapped) target end val () = let val x = readInt () val ans = findAns 0 x in print (Int.toString ans ^ "\n") end