fib=[0,1,1]
for i in range(3,51):
fib.append(fib[-1]+fib[-2])
for i in range(1,51):
fib[i]+=fib[i-1]
n,m=map(int,input().split())
ans=[0]*n
left=m
last=0
for i in range(n):
if ans[i]!=0:
continue
for j in range(i+1,n+1):
size=n-j
if size==1:
perms=1
else:
perms = fib[size - 1] + 1
if perms>=left:
ans[i]=j
break
else:
left-=perms
nlast=ans[i]
t=i+1
while(t<n and ans[t-1]!=last+1):
ans[t]=ans[t-1]-1
t+=1
last=nlast
print(*ans)
227B - Effective Approach | 1534B - Histogram Ugliness |
1611B - Team Composition Programmers and Mathematicians | 110A - Nearly Lucky Number |
1220B - Multiplication Table | 1644A - Doors and Keys |
1644B - Anti-Fibonacci Permutation | 1610A - Anti Light's Cell Guessing |
349B - Color the Fence | 144A - Arrival of the General |
1106A - Lunar New Year and Cross Counting | 58A - Chat room |
230A - Dragons | 200B - Drinks |
13A - Numbers | 129A - Cookies |
1367B - Even Array | 136A - Presents |
1450A - Avoid Trygub | 327A - Flipping Game |
411A - Password Check | 1520C - Not Adjacent Matrix |
1538B - Friends and Candies | 580A - Kefa and First Steps |
1038B - Non-Coprime Partition | 43A - Football |
50A - Domino piling | 479A - Expression |
1480A - Yet Another String Game | 1216C - White Sheet |