WTF, not use recursion if you do not want have bad time