def p():
	q,r,t,j = 1,180,60,2
	while True:
		u,y = 3*(3*j+1)*(3*j+2),(q*(27*j-12)+5*r)//(5*t)
		yield y
		q,r,t,j = 10*q*j*(2*j-1),10*u*(q*(5*j-2)+r-y*t),t*u,j+1
p=p()

LIM = 5000

d=L = [p.next()]
#print 0,
print 3

n=1
while n<LIM:
	x = p.next()
	if d[-1]==x:
		d.append(x)
		if len(d)>len(L):
			#print n, 
			print "".join(str(i)for i in d)
			L.append(long("".join(str(i)for i in d)))
	else:
		d=[x]
	n += 1

#print
#for i in L:print str(i),
#print