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>
/*
 *created by Kraken on 04-05-2020 at 09:30
 */
//package com.kraken.cf.practice;

import java.util.*;
import java.io.*;

public class C515 {

  public static void main(String[] args) {
    FastReader sc = new FastReader();
    int n = sc.nextInt();
    char[] c = sc.next().toCharArray();
    Map<Character, String> map = new HashMap<>();
    map.put('2', "2");
    map.put('3', "3");
    map.put('4', "322");
    map.put('5', "5");
    map.put('6', "53");
    map.put('7', "7");
    map.put('8', "7222");
    map.put('9', "7332");
    Arrays.sort(c);
    ArrayList<Character> r = new ArrayList<>();
    for (int i = n - 1; i >= 0; i--) {
      if (map.containsKey(c[i])) for (char j : map.get(c[i]).toCharArray()) {
        r.add(j);
      }
    }
    Collections.sort(r, Collections.reverseOrder());
    StringBuilder sb = new StringBuilder();
    for (char i : r) sb.append(i);
    System.out.println(sb);
  }

  static class FastReader {

    BufferedReader br;

    StringTokenizer st;

    public FastReader() {
      br = new BufferedReader(new InputStreamReader(System.in));
    }

    String next() {
      while (st == null || !st.hasMoreElements()) {
        try {
          st = new StringTokenizer(br.readLine());
        }
        catch (IOException e) {
          e.printStackTrace();
        }
      }
      return st.nextToken();
    }

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

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

    double nextDouble() {
      return Double.parseDouble(next());
    }

    String nextLine() {
      String str = "";
      try {
        str = br.readLine();
      }
      catch (IOException e) {
        e.printStackTrace();
      }
      return str;
    }
  }
}
