def count(n):
a=[1,11] #初始化
if n==0:
return a[0]
if n==1:
return a[1]
for i in range(2,n+1): #每遍历一次得出下一个值,当n=3时,第一次由a[1]先得出a[2],下次由a[2]得出a[3]
s=str(a[i-1]) #得到列表上一个值,并变成字符串
#print(s)
l=len(s) #字符串的长度,用来控制判断遍历的次数,2位则判断1次
cnt=1 #记录相同字符的个数
tmp='' #记录结果
for j in range(l-1): #思路是每次添加判断的前一个字符,最后一位时添加判断2个字符
if s[j]==s[j+1]: #比如a[0]和a[1]相同则cnt+1
cnt+=1
else:
tmp+=str(cnt) #字符不同时把当前或上次判断好的结果添加到tmp
tmp+=s[j]
cnt=1
if (j+2)==l: #字符不同且是最后一次遍历时添加末位字符到tmp
tmp+=str(cnt)
tmp+=s[j+1]
if s[j]==s[j+1]: #遍历结束代表已到末位,字符相同添加到tmp
tmp+=str(cnt)
tmp+=s[j]
a.append(int(tmp)) #把循环一次得到的值添加到数组,每次循环可以得到一个
return a[n]
while True:
try:
n=int(input())
print(count(n))
except:
break