#!/usr/bin/env python32

# from __future__ import division
from functools import lru_cache

def lose_condition(x):
  return x<1

def action_A(x):
  return x-1

def action_B(x):
  return x/2

ACTIONS = (action_A, action_B)

@lru_cache(maxsize=100)
def detect_winner(n, cond=lose_condition, actions=ACTIONS):
  if cond(n):
    return True
  return not all(detect_winner(action(n)) for action in actions)

if __name__ == '__main__':

  assert not detect_winner(1)
  assert not detect_winner(1.5)
  assert detect_winner(2)
  assert detect_winner(2.5)
  assert detect_winner(3)
  assert not detect_winner(4)
  assert detect_winner(5)
  assert not detect_winner(6)
  print("OK")
