более-менее адекватный DFS + inc()