Drazil is playing a math game with Varda.

Let's define <image> for positive integer x as a product of factorials of its digits. For example, <image>.

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. <image> = <image>.

Help friends find such number.

Input

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.

Output

Output a maximum possible integer satisfying the conditions above. There should be no zeroes and ones in this number decimal representation.

Examples

Input

4
1234


Output

33222


Input

3
555


Output

555

Note

In the first case, <image>
from math import *
def factPrimeDict(n):
    return makePrimeDict(factorial(n))

def numfactPrime(n):
    d={}
    while n>0:
        dictAdd(d,factPrimeDict(n%10))
        n/=10
    return d

def makePrimeDict(n):
    d={}
    i=2
    while n>1:
        while n>1 and n%i==0:
            n/=i
            if i in d:
                d[i]+=1
            else:
                d[i]=1
        if i>sqrt(n) and n!=1:
            d[n]=1
            break
        i+=1
    return d

def dictAdd(d1,d2):
    for i in d2:
        if not i in d1:
            d1[i]=d2[i]
        else:
            d1[i]+=d2[i]
    return d1

def dictsub(d1,d2):
    """ Assumes always subtraction Possible"""
    for i in d2:
        d1[i]-=d2[i]
        if d1[i]==0:
            del d1[i]
    return d1

def findMaxNumF(n):
    d=numfactPrime(n)
    numstr=''
    while len(d)!=0:
        l=d.keys()
        m=max(l)
        numstr+=str(m)
        dictsub(d,factPrimeDict(m))
    return numstr

useless=raw_input()
t=int(raw_input())
print findMaxNumF(t)
