Drazil is playing a math game with Varda.

Let's define <img align="middle" class="tex-formula" src="https://espresso.codeforces.com/7020b94c48be2ee5b8eeca05f379c8911bb0e7c4.png" style="max-width: 100.0%;max-height: 100.0%;"/> for positive integer *x* as a product of factorials of its digits. For example, <img align="middle" class="tex-formula" src="https://espresso.codeforces.com/6784d861d9a724d0aeddefcb00b7d0c3442ae586.png" style="max-width: 100.0%;max-height: 100.0%;"/>.

First, they choose a decimal number *a* consisting of *n* digits that contains at least one digit larger than 1. This number may possibly start with leading zeroes. Then they should find maximum positive number *x* satisfying following two conditions:

1. *x* doesn't contain neither digit 0 nor digit 1.

2. <img align="middle" class="tex-formula" src="https://espresso.codeforces.com/7020b94c48be2ee5b8eeca05f379c8911bb0e7c4.png" style="max-width: 100.0%;max-height: 100.0%;"/> = <img align="middle" class="tex-formula" src="https://espresso.codeforces.com/aa57e017a6c74d06b0a54bc47e3f6990e5af38c1.png" style="max-width: 100.0%;max-height: 100.0%;"/>.

Help friends find such number.
The first line contains an integer *n* (1 ≤ *n* ≤ 15) — the number of digits in *a*.

The second line contains *n* digits of *a*. There is at least one digit in *a* that is larger than 1. Number *a* may possibly contain leading zeroes.
import os , sys,time, collections , math , pprint , itertools as it , operator as op , bisect as bs ,functools as fn
maxx , localsys , mod = 1<<60, 0 , int(1e9 + 7) 
nCr = lambda n, r: reduce(mul, range(n - r + 1, n + 1), 1) // factorial(r)
ceil = lambda n , x: (n+x -1 )//x 
osi, oso = '/home/priyanshu/Documents/cp/input.txt','/home/priyanshu/Documents/cp/output.txt'
if os.path.exists(osi):
	sys.stdin  = open(osi, 'r') ; sys.stdout = open(oso, 'w')
	
input = sys.stdin.readline
from functools import reduce
def maps():return map(int , input().split())

#THINK ABOUT THE EDGE CASES ..........
def Kth_beautiful_string():
	for _ in range(int(input())):
		n , k = maps() ; arr = ['a']*n
		for i in range(n-1 , -1 , -1):
			if n-i-1 >= k:
				arr[i]=  arr[i + (n-i-1) - (k-1)] ='b'
				print(''.join(arr)) ; break
			k-=n-i-1
	#constantly decrease the number of string whose left most position is at i,because at every ith position (n-i-1) strings exists whose left most position is at i


# f = math.factorial
n = int(input()) ; ans =[] ;s = [*map(int, input().rstrip('\n'))] ; p = []
d = {4:[2 ,2]}
for i in s:
	x = i
	while x>1:
		if x in d:
			for t in d[x]:
				p.append(t)
		else:
			p.append(x)
		x-=1
p = collections.Counter(p)
# print(p)
OK = True
while OK :
	for i in range(9 , 1 , -1):
		if p[i]:
			ok = True
			for j in range(i-1 ,1 ,-1):
				if j == 4 and not p[j] and p[2] >= 2:
					continue
				if not p[j] :
					ok = False
			if ok:
				for j in range(i-1 ,1 ,-1):
					if j == 4 and not p[j]:
						p[2]-=2
					else:
						p[j]-=1
				ans.append(i)
				p[i]-=1
				break
	else:
		break
print(*ans,sep='')
