import math
def solution(n):
# n => 총 칸 수, 사람은 1칸, 2칸 이렇게 뛸 수 있다.
# a + 2*b = n
# (a, b) 를 구하고 이에 대한 순열 문제를 풀어야 하는 건가?
one_steps = [] #한 칸 갯수
two_steps = [] #두 칸 갯수
for i in range(0, n+1):
one_step = i
two_step = (n-i)//2 if (n-i)%2==0 else -1
#n에서 one_step 갯수를 빼면 two_step*2가 나오기 때문. 하지만 만약 이게 홀수라면 분할 실패
#그렇기 때문에 if문으로 처리하여 continue로 다음 one_step갯수를 세도록 한다.
if two_step == -1:
continue
else:
one_steps.append(one_step)
two_steps.append(two_step)
cnt = 0
for one_step, two_step in zip(one_steps, two_steps):
if one_step == 0 or two_step == 0: # 1,1,1,1,1,1 이거나 2,2,2일 때. factorial 연산 번거러움
cnt += 1
continue
total_place = one_step+two_step #one_step 1개, two_step 2개라면 1, 2, 2 라서 자리 3개
# 중복?순열인가 3! // 2! 이었던 것 같음
tmp = math.factorial(total_place)//(math.factorial(one_step)*math.factorial(two_step))
cnt += tmp
return cnt%1234567