//{{{
#include<algorithm>
#include<cmath>
#include<fstream>
#include<iomanip>
#include<iostream>
#include<map>
#include<numeric>
#include<queue>
#include<random>
#include<set>
#include<sstream>
#include<sys/time.h>
#include<unordered_map>
#include<unordered_set>
#include<vector>
using ll = long long;
enum : int { M = (int)1e9 + 7 };
enum : ll { MLL = (ll)1e18L + 9 };
using namespace std;
#ifdef LOCAL
#include"rprint2.hpp"
#else
#define FUNC(name) template <ostream& out = cout, class... T> void name(T&&...){ }
FUNC(prints) FUNC(printw) FUNC(printwe) FUNC(printb) FUNC(printbe) FUNC(printd) FUNC(printde) FUNC(printdu);
#endif
template <class S, class T>
istream& operator >> (istream& in, pair<S, T>& p){ return in >> p.first >> p.second; }
template <class T>
istream& operator >> (istream& in, vector<T>& v){ for(auto& e : v){ in >> e; } return in; }
//}}}


vector<int> memo[100010];
vector<int> ns({ 6, 2, 5, 5, 4, 5, 6, 3, 7, 6});
vector<int> v1({-1}), v0({0});
vector<int> func(int n, vector<int>& as, int idx){
    if(idx == -1){ return n ? v1 : v0; }
    // if(n == 0){ printde(idx); return ""; }
    int key = n * 10 + idx;
    if(memo[key].size()){ return memo[key]; }
    double maxi = -1;
    vector<int> str = {-1};
    int a = as[idx];
    // printde(a, n, idx);
    for(int i = 0; i <= n / ns[a]; i++){
        auto&& p = func(n - ns[a] * i, as, idx - 1);
        int size = accumulate(p.begin(), p.end(), 0ll);
        if(p[0] != -1 && maxi <= i + size){
            maxi = i + size;
            p.push_back(i);
            str = p;
        }else if(p[0] != -1 && maxi > i + size){
            break;
        }
        if(i > 100){
    maxi = -1;
    str = {-1};
    for(int i = n / ns[a]; i >= 0; i--){
        auto&& p = func(n - ns[a] * i, as, idx - 1);
        int size = accumulate(p.begin(), p.end(), 0ll);
        if(p[0] != -1 && maxi < i + size){
            maxi = i + size;
            p.push_back(i);
            str = p;
        }else if(p[0] != -1 && maxi >= i + size){
            break;
        }
    }
    break;
        }
    }
    return memo[key] = str;
}

// string memo[100010];
// vector<int> ns({ 6, 2, 5, 5, 4, 5, 6, 3, 7, 6});
// string func(int n, vector<int>& as, int idx){
//     if(idx == -1){ return n ? "a" : ""; }
//     // if(n == 0){ printde(idx); return ""; }
//     int key = n * 10 + idx;
//     if(memo[key].size()){ return memo[key]; }
//     double maxi = -1;
//     string str = "a";
//     int a = as[idx];
//     // printde(a, n, idx);
//     for(int i = 0; i <= n / ns[a]; i++){
//         auto&& p = func(n - ns[a] * i, as, idx - 1);
//         if(p != "a" && maxi <= i + p.size()){
//             maxi = i + p.size();
//             str = string(i, a + '0') + p;
//         }else if(p != "a" && maxi > i + p.size()){
//             break;
//         }
//         if(i == 100){
//     for(int i = n / ns[a]; i>= 0; i--){
//         auto&& p = func(n - ns[a] * i, as, idx - 1);
//         if(p != "a" && maxi <= i + p.size()){
//             maxi = i + p.size();
//             str = string(i, a + '0') + p;
//         }else if(p != "a" && maxi > i + p.size()){
//             break;
//         }
//     }
//     break;
//         }
//     }
//     return memo[key] = str;
// }

int main(){
    cin.tie(0);
    ios::sync_with_stdio(false);
    int n, m;
    cin >> n >> m;
    vector<int> as(m); cin >> as;
    sort(as.begin(), as.end());
    printde(as);
    auto ret = func(n, as, m - 1);
    printde(ret);
    string ans;
    for(int i = ret.size() - 1; i >= 1; i--){
        ans += string(ret[i], as[i - 1] + '0');
    }
    cout << ans << '\n';
    // cout << func(n, as, m - 1) << '\n';
    // if(n % 2 == 0){
    //     cout << string(n / 2, '1') << '\n';
    // }else{
    //     if(m >= 7){
    //         cout << "7" + string(n / 2 - 1, '1') << '\n';
    //     }else if(m >= 5){
    //         cout << "5" + string(n / 2 - 2, '1') << '\n';
    //     }else if(m >= 3){
    //         cout << "3" + string(n / 2 - 2, '1') << '\n';
    //     }else if(m >= 2){
    //         cout << "2" + string(n / 2 - 2, '1') << '\n';
    //     }
    // }
}


Measured memory_bytes: 2944