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>
//package codeforces;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.StringTokenizer;

public class A {
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    PrintWriter writer = new PrintWriter(System.out);

    A() throws IOException {
//        reader = new BufferedReader(new FileReader("input.txt"));
//        writer = new PrintWriter(new FileWriter("output.txt"));
    }

    StringTokenizer stringTokenizer;

    String next() throws IOException {
        while (stringTokenizer == null || !stringTokenizer.hasMoreTokens()) {
            stringTokenizer = new StringTokenizer(reader.readLine());
        }
        return stringTokenizer.nextToken();
    }

    int nextInt() throws IOException {
        return Integer.parseInt(next());
    }

    long nextLong() throws IOException {
        return Long.parseLong(next());
    }

    void solve() throws IOException {
        int n = nextInt();
        int[] cnt = new int[8];
        for (char c : next().toCharArray()) {
            for(int i = 2; i <= c - '0'; i++) {
                int x = i;
                for(int j = 2; j <= 7; j++) {
                    while(x % j == 0) {
                        cnt[j]++;
                        x /= j;
                    }
                }
            }
        }
        List<Integer> ans = new ArrayList<>();
        for (int x : new int[] {7, 5, 3, 2}){
            while(cnt[x] > 0) {
                ans.add(x);
                for(int i = x; i > 1; i--) {
                    int y = i;
                    for(int j = 2; j <= 7; j++) {
                        while(y % j == 0) {
                            cnt[j]--;
                            y /= j;
                        }
                    }
                }
            }
        }
        for (Integer x : ans) {
            writer.print(x);
        }
        writer.close();
    }

    public static void main(String[] args) throws IOException {
        new A().solve();
    }
}
