501 challenging logic and reasoning problems