более-менее адекватный DFS