takeFromTree :: Int -> Tree -> [Forest]
takeFromTree n t = recurse n [([t], [])] where
  recurse :: Int -> [Lumberyard] -> [Forest]
  recurse 0 f = map (uncurry (++)) f
  recurse n f = recurse (n - 1) (concatMap nextGen f)
takeFromTree :: Int -> Tree -> [Forest]
takeFromTree n t = recurse n [([t], [])] where
  recurse :: Int -> [Lumberyard] -> [Forest]
  recurse 0 f = map (uncurry (++)) f
  recurse n f = recurse (n - 1) (concatMap nextGen f)
takeFromTree n t = recurse n [([t], [])] where
  recurse :: Int -> [Lumberyard] -> [Forest]
  recurse 0 f = map (uncurry (++)) f
  recurse n f = recurse (n - 1) (concatMap nextGen f)