target=105000
d=[0]*target
n=2
while n < target:
for i in range(n*n,target,n):
d[i]+=1
n+=1
while n < target and d[n]>0:
n+=1
n=10000
P=[]
C=[]
k=2
while len(P) < n or len(C) < n:
x=(k-1)%9+1
if d[k]==0 and len(P) < n:
P.append(x)
if d[k]>0 and len(C) < n:
C.append(x)
k+=1
L=[[0]*(n+1) for i in range(n+1)]
for i in range(n-1,-1,-1):
for j in range(n-1,-1,-1):
if P[i]==C[j]:
L[i][j]=L[i+1][j+1]+1
else:
L[i][j]=max(L[i][j+1],L[i+1][j])
F=[]
i=j=0
while i < n and j < n:
if P[i]==C[j]:
F.append(P[i])
i+=1
j+=1
elif P[i] < C[j]:
if L[i][j]==L[i+1][j]:
F.append(P[i])
i+=1
else:
F.append(C[j])
j+=1
else:
if L[i][j]==L[i][j+1]:
F.append(C[j])
j+=1
else:
F.append(P[i])
i+=1
else:
F.extend(P[i:])
F.extend(C[j:])
print int("".join(map(str,F)))%(10**9+7)