def fibon(n):
# 基本情況:如果n為0或1,返回1
if n < 2:
return 1
# 遞迴情況:返回f(n-1) + f(n-2)
else:
return fibon(n - 1) + fibon(n - 2)
# 讀取用戶輸入的n的初始值。
n = int(input())
while n != 0:
# 初始化一個包含當前值n的列表'g'。
g = [n]
print("f(" + str(n) + ") ")
# 持續處理直到g中的所有元素都小於2。
while any(i >= 2 for i in g):
# 初始化一個新列表'r'以存儲序列的下一組值。
r = []
# 根據代碼中指定的規則生成下一組值。
for t in g:
if t >= 2:
r.append(t - 1)
r.append(t - 2)
else:
r.append(t)
# 使用新的值更新列表'g'。
g = r
# 打印本次迭代生成的值序列。
for t in r:
print("f(" + str(t) + ") ", end="")
print()
# 使用遞迴計算f(n)的結果並打印。
result = fibon(n)
print("f(" + str(n) + ") = " + str(result))
# 從用戶讀取n的下一個值。
n = int(input())