# 19
```python=
def is_winning_position(heap1, heap2, turn):
if heap1 + heap2 <= 18: # Если игра окончена
if turn == 3: # И это следующий ход после хода Вани
return True # то победа
else:
return False # иначе непобеда
if turn > 2: # Если игра длится дольше двух ходов - проигрыш
return False
turn1 = is_winning_position(heap1 - 1, heap2, turn + 1)
turn2 = is_winning_position(heap1, heap2 - 1, turn + 1)
turn3 = is_winning_position(heap1 // 2, heap2, turn + 1)
turn4 = is_winning_position(heap1, heap2 // 2, turn + 1)
# any([True, False, False]) == True
# all([True, True, True]) == True
if turn % 2 == 0:
if any([turn1, turn2, turn3, turn4]): # Если ход Вани - то нам нужен хотя бы один выйгрышный ход
return True
else:
return False
else:
if all([turn1, turn2, turn3, turn4]): # Если ход Пети - то нам нужно чтобы как бы он ни сходил, Ваня побеждал всегда
return True
else:
return False
for M in range(10, 100):
if is_winning_position(M, M, 1):
print(M)
```

Ответ: 13
# 20
```python=
def is_winning_position(heap1, heap2, turn):
if heap1 + heap2 <= 18: # Если игра окончена
if turn == 4: # И это следующий ход после хода Пети
return True # то победа
else:
return False # иначе непобеда
if turn > 3: # Если игра длится дольше двух трёх ходов - проигрыш
return False
turn1 = is_winning_position(heap1 - 1, heap2, turn + 1)
turn2 = is_winning_position(heap1, heap2 - 1, turn + 1)
turn3 = is_winning_position(heap1 // 2, heap2, turn + 1)
turn4 = is_winning_position(heap1, heap2 // 2, turn + 1)
# any([True, False, False]) == True
# all([True, True, True]) == True
if turn % 2 == 1:
if any([turn1, turn2, turn3, turn4]): # Если ход Вани - то нам нужен хотя бы один выйгрышный ход
return True
else:
return False
else:
if all([turn1, turn2, turn3, turn4]): # Если ход Пети - то нам нужно чтобы как бы он ни сходил, Ваня побеждал всегда
return True
else:
return False
for S in range(6, 100):
if is_winning_position(13, S, 1):
print(S)
```

Ответ: 14 27
## 21
```python=
# П -(1)-> В
# В -(2)-> П
# П -(3)-> В
# В -(4)-> П
# П -(5)-> В -
def is_winning_position(heap1, heap2, turn):
if heap1 + heap2 <= 18: # Если игра окончена
if turn == 3 or turn == 5: # И это следующий ход после хода Вани
return True # то победа
else:
return False # иначе непобеда
if turn > 4: # Если игра длится дольше четырёх ходов - проигрыш
return False
turn1 = is_winning_position(heap1 - 1, heap2, turn + 1)
turn2 = is_winning_position(heap1, heap2 - 1, turn + 1)
turn3 = is_winning_position(heap1 // 2, heap2, turn + 1)
turn4 = is_winning_position(heap1, heap2 // 2, turn + 1)
# any([True, False, False]) == True
# all([True, True, True]) == True
if turn % 2 == 0:
if any([turn1, turn2, turn3, turn4]): # Если ход Вани - то нам нужен хотя бы один выйгрышный ход
return True
else:
return False
else:
if all([turn1, turn2, turn3, turn4]): # Если ход Пети - то нам нужно чтобы как бы он ни сходил, Ваня побеждал всегда
return True
else:
return False
for N in range(10, 100):
if is_winning_position(N, N, 1):
print(N)
```

Ответ: 14
```
⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⠤⠖⠚⢉⣩⣭⡭⠛⠓⠲⠦⣄⡀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⢀⡴⠋⠁⠀⠀⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠳⢦⡀⠀⠀⠀⠀
⠀⠀⠀⠀⢀⡴⠃⢀⡴⢳⠀⠀⠀⠀⠀⢣⠀⠀⢣⠀⠀⠀⠀⠀⠀ ⠙⣆⠀⠀⠀
⠀⠀⠀⠀⡾⠁⣠⠋⠀⠈⢧⠀⠀⠀⠀⠀⢣⠀⠀⢣⠀⠀⠀⠀⠀⠀ ⠈⢧⠀⠀
⠀⠀⠀⣸⠁⢰⠃⠀⠀⠀⠈⢣⡀⠀⠀⠀⠀⢣⢀⢀⢣⠀⠀⠀⠀⠀⠀ ⠈⣇⠀
⠀⠀⠀⡇⠀⡾⡀⠀⠀⠀⠀⣀⣹⣆⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⢹⠀
⠀⠀⢸⠃⢀⣇⡈⠀⠀⠀⠀⠀⠀⢀⡑⢄⡀⢀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⢸⡇
⠀⠀⢸⠀⢻⡟⡻⢶⡆⠀⠀⠀⠀⡼⠟⡳⢿⣦⡑⢄⠀⠀⠀⠀⠀⠀⠀⠀ ⢸⡇
⠀⠀⣸⠀⢸⠃⡇⢀⠇⠀⠀⠀⠀⠀⡼⠀⠀⠈⣿⡗⠂⠀⠀⠀⠀⠀⠀⠀ ⢸⠁
⠀⠀⡏⠀⣼⠀⢳⠊⠀⠀⠀⠀⠀⠀⠱⣀⣀⠔⣸⠁⠀⠀⠀⠀⠀⠀⢠⡟⠀
⠀⠀⡇⢀⡇⠀⠀⠀⠀/⠀⠀⠀⠀⠀⠀⠀⠠⠀⡇⠀⠀⠀⠀⠀⠀⠀⢸⠃⠀
⠀⢸⠃⠘⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠁⠀⠀⢀⠀⠀⠀⠀⠀⣾⠀⠀
⠀⣸⠀⠀⠹⡄⠀⠀⠈⠁⠀⠀⠀⠀⠀⠀⠀⡞⠀⠀⠀⠸⠀⠀⠀⠀⠀⡇⠀⠀
⠀⡏⠀⠀⠀⠙⣆⠀⠀⠀⠀⠀⠀⠀⢀3⣠⢶⡇⠀⠀⢰⡀⠀⠀⠀⠀⠀⡇⠀⠀
⢰⠇⡄⠀⠀⠀⡿⢣⣀⣀⣀⡤⠴⡞⠉⠀⢸⠀⠀⠀⣿⡇⠀⠀⠀⠀⠀⣧⠀⠀
⣸⠀⡇⠀⠀⠀⠀⠀⠀⠉⠀⠀⠀⢹⠀⠀⢸⠀⠀⢀⣿⠇⠀⠀⠀⠁⠀⢸⠀⠀
⣿⠀⡇⠀⠀⠀⠀⠀⢀⡤⠤⠶⠶⠾⠤⠄⢸⠀⡀⠸⣿⣀⠀⠀⠀⠀⠀⠈⣇⠀
⡇⠀⡇⠀⠀⡀⠀⡴⠋⠀⠀⠀⠀⠀⠀⠀⠸⡌⣵⡀⢳⡇⠀⠀⠀⠀⠀⠀⢹⡀
⡇⠀⠇⠀⠀⡇⡸⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠮⢧⣀⣻⢂⠀⠀⠀⠀⠀⠀⢧
⣇⠀⢠⠀⠀⢳⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⡎⣆⠀⠀⠀⠀⠀⠘
⢻⠀⠈⠰⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠰⠘⢮⣧⡀⠀⠀⠀⠀
⠸⡆⠀⠀⠇⣾⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠆⠀⠀⠀⠀⠀⠀⠀⠙⠳⣄⡀⢢⡀
```