Y = lambda f: (lambda x: x(x))(lambda self: f(lambda:self(self)))
g = lambda recurse: lambda n: 1 if n < 2 else n * recurse()(n - 1)
print Y(g)(6)
WSA9IGxhbWJkYSBmOiAobGFtYmRhIHg6IHgoeCkpKGxhbWJkYSBzZWxmOiBmKGxhbWJkYTpzZWxmKHNlbGYpKSkKZyA9IGxhbWJkYSByZWN1cnNlOiBsYW1iZGEgbjogMSBpZiBuIDwgMiBlbHNlIG4gKiByZWN1cnNlKCkobiAtIDEpCnByaW50IFkoZykoNikK