{-# LANGUAGE DeriveFunctor #-}
import Data.List
a = Node 1 [a]
flatten_a (Node x (n:_)) = x : flatten_a n
scan f
(Node r l
) = Node r
$ map (fmap (f r
) . scan f
) l
main
= print $ foldl' (+) 0 $ take 1800 $ flatten_a $ scan (+) a
ey0jIExBTkdVQUdFIERlcml2ZUZ1bmN0b3IgIy19CgppbXBvcnQgRGF0YS5MaXN0CgpkYXRhIFRyZWUgYSA9IE5vZGUgYSBbVHJlZSBhXSBkZXJpdmluZyAoRnVuY3RvciwgU2hvdykKCmEgOjogVHJlZSBEb3VibGUKYSA9IE5vZGUgMSBbYV0KCmZsYXR0ZW5fYSAoTm9kZSB4IChuOl8pKSA9IHggOiBmbGF0dGVuX2EgbgoKc2NhbiBmIChOb2RlIHIgbCkgPSBOb2RlIHIgJCBtYXAgKGZtYXAgKGYgcikgLiBzY2FuIGYpIGwKCm1haW4gPSBwcmludCAkIGZvbGRsJyAoKykgMCAkIHRha2UgMTgwMCAkIGZsYXR0ZW5fYSAkIHNjYW4gKCspIGE=