Ваше решение не учитывает возможности выезда части вагонов из тупика, все вагоны, попавшие в тупик, почему-то могут выехать из него только в конце. В итоге неверный ответ, например, на тесте 2 1 3 - выдаст NO вместо YES (Нужная последовательность действий: 2 - в тупик, 1 - через тупик на путь 2, 2 - из тупика на путь 2, 3 - через тупик на путь 2).Вот что-то, приближенное к вашему решению, рассматривающее и эту возможность:l = int(input())s = list(map(int, input().split())) tup = [0] # тупикtr2 = [0] # путь 2 for i in range(l): while tup[-1] == tr2[-1] + 1: tr2.append(tup[-1]) tup.pop() if s[i] == tr2[-1] + 1: tr2.append(s[i]) else: tup.append(s[i]) while tup[-1] == tr2[-1] + 1: tr2.append(tup[-1]) tup.pop() if tr2[-1] == l: print('YES')else: print('NO')