def Bigger(item1,item2,n):
for i in range(n):
if item1>item2:
return True
return False
def mysort(ls,n):
for i in range(len(ls)-1):
for j in range(i,len(ls)-1):
if Bigger(ls[j],ls[j+1],n)==True:
temp=ls[j]
ls[j]=ls[j+1]
ls[j+1]=temp
return ls
def Quanpailie(n):
if n==1:
return [[1]]
else:
ls1=[]
ls2=Quanpailie(n-1)
for i in range(len(ls2)):
temp=ls2[i].copy()
temp.append(n)
ls1.append(temp)
for j in range(n-1):
temp=ls2[i].copy()
temp.insert(n-2-j,n)
ls1.append(temp)
return mysort(ls1,n)
n=eval(input())
ls=Quanpailie(n)
for i in ls:
for j in i:
print(j,end=" ")
print("")