9 # (ok, i, f) = freadi f
21 # (preamble, [num:rest]) = splitAt 25 l
22 | isEmpty [()\\a<-preamble, b<-preamble | a + b == num] = [num]
26 # ls = fst (splitAt 25 ls) ++ pre ls
27 # a = sort (hd (calc (last ls) ls))
30 // calc :: Int [Int] -> (Int, Int)
31 calc num xs = hd (filter (not o isEmpty) [calc` num l\\l<-tails xs])
33 calc` num xs = filter ((==)num o sum) (dropWhile ((<) num o sum) (inits xs))