#include <bits/stdc++.h>
using namespace std;
template <typename Arg1>
void __f(const char* name, Arg1&& arg1) {
  cerr << name << " : " << arg1 << '\n';
}
template <typename Arg1, typename... Args>
void __f(const char* names, Arg1&& arg1, Args&&... args) {
  const char* comma = strchr(names + 1, ',');
  cerr.write(names, comma - names) << " : " << arg1 << " | ";
  __f(comma + 1, args...);
}
bool cmpManh(const std::pair<long long, long long>& l,
             const std::pair<long long, long long>& r) {
  return ((llabs(l.first) + llabs(l.second)) <
          (llabs(r.first) + llabs(r.second)));
}
int gcd(int a, int b) {
  if (a == 0) return b;
  return gcd(b % a, a);
}
int main(void) {
  int n;
  scanf("%d", &n);
  string str;
  cin >> str;
  string ans[10], anss = "!";
  ans[0] = "!";
  ans[1] = "!";
  ans[2] = "2";
  ans[3] = "3";
  ans[4] = "322";
  ans[5] = "5";
  ans[6] = "53";
  ans[7] = "7";
  ans[8] = "7222";
  ans[9] = "7332";
  for (int i = 0; i < n; ++i) {
    anss += ans[str[i] - '0'];
  }
  vector<int> q;
  for (int i = 1; i < anss.size(); ++i) {
    if (anss[i] != '!') q.push_back(anss[i] - '0');
  }
  sort(q.begin(), q.end());
  for (int i = q.size() - 1; i > -1; --i) {
    cout << q[i];
  }
  cout << '\n';
  return (0);
}

### Prompt

Please create a solution in Cpp to the following problem:

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>

### Response

```cpp
#include <bits/stdc++.h>
using namespace std;
template <typename Arg1>
void __f(const char* name, Arg1&& arg1) {
  cerr << name << " : " << arg1 << '\n';
}
template <typename Arg1, typename... Args>
void __f(const char* names, Arg1&& arg1, Args&&... args) {
  const char* comma = strchr(names + 1, ',');
  cerr.write(names, comma - names) << " : " << arg1 << " | ";
  __f(comma + 1, args...);
}
bool cmpManh(const std::pair<long long, long long>& l,
             const std::pair<long long, long long>& r) {
  return ((llabs(l.first) + llabs(l.second)) <
          (llabs(r.first) + llabs(r.second)));
}
int gcd(int a, int b) {
  if (a == 0) return b;
  return gcd(b % a, a);
}
int main(void) {
  int n;
  scanf("%d", &n);
  string str;
  cin >> str;
  string ans[10], anss = "!";
  ans[0] = "!";
  ans[1] = "!";
  ans[2] = "2";
  ans[3] = "3";
  ans[4] = "322";
  ans[5] = "5";
  ans[6] = "53";
  ans[7] = "7";
  ans[8] = "7222";
  ans[9] = "7332";
  for (int i = 0; i < n; ++i) {
    anss += ans[str[i] - '0'];
  }
  vector<int> q;
  for (int i = 1; i < anss.size(); ++i) {
    if (anss[i] != '!') q.push_back(anss[i] - '0');
  }
  sort(q.begin(), q.end());
  for (int i = q.size() - 1; i > -1; --i) {
    cout << q[i];
  }
  cout << '\n';
  return (0);
}

```