N, M = map(int, input().split())
A = list(map(int, input().split()))
table = [0,2,5,5,4,5,6,3,7,6]
A.sort(reverse=True)
inf = (-1) * 10**5
#dp[i] := ちょうどi本のマッチを使って作る整数の、最大桁数
dp = [inf for i in range(N+1)]
dp[0] = 0
for i in range(N+1):
    for j in range(len(A)):
        if i + table[A[j]] > N:
            continue
        if dp[i + table[A[j]]] < dp[i] + 1:
            dp[i + table[A[j]]] = dp[i] + 1
#こうすることで、答えの桁数が分る.
#あとは実現する経路復元のようなものを行う
ans = ""
cur_cost = N
#各桁について一つずつ答えを決めていく
for _ in range(dp[N]):
    #大きい数字から最上位に決めていきたいので、大きい数字から考える
    for j in range(len(A)):
        if cur_cost - table[A[j]] < 0:
            continue
        if dp[cur_cost - table[A[j]]] == dp[cur_cost] - 1:
            ans += str(A[j])
            cur_cost -= table[A[j]]
            break
print(ans)
 N, M = map(int, input().split()) N map(int, input().split()) map int input().split() ().split () input split M A = list(map(int, input().split())) A list(map(int, input().split())) list map(int, input().split()) map int input().split() ().split () input split table = [0,2,5,5,4,5,6,3,7,6] table [0,2,5,5,4,5,6,3,7,6] 0 2 5 5 4 5 6 3 7 6 A.sort(reverse=True) A.sort A sort reverse=True reverse True inf = (-1) * 10**5 inf (-1) * 10**5 -1 10**5 10 5 inf for i in range(N+1) for i in range(N+1) i range(N+1) range N+1 N 1 for i in range(N+1) inf dp = [inf for i in range(N+1)] dp [inf for i in range(N+1)] dp[0] = 0 dp[0] dp 0 0 for i in range(N+1):
    for j in range(len(A)):
        if i + table[A[j]] > N:
            continue
        if dp[i + table[A[j]]] < dp[i] + 1:
            dp[i + table[A[j]]] = dp[i] + 1
#こうすることで、答えの桁数が分る.
#あとは実現する経路復元のようなものを行う i range(N+1) range N+1 N 1 for j in range(len(A)):
        if i + table[A[j]] > N:
            continue
        if dp[i + table[A[j]]] < dp[i] + 1:
            dp[i + table[A[j]]] = dp[i] + 1
#こうすることで、答えの桁数が分る.
#あとは実現する経路復元のようなものを行う j range(len(A)) range len(A) len A if i + table[A[j]] > N:
            continue
         i + table[A[j]] > N i + table[A[j]] i table[A[j]] table A[j] A j N continue if dp[i + table[A[j]]] < dp[i] + 1:
            dp[i + table[A[j]]] = dp[i] + 1
#こうすることで、答えの桁数が分る.
#あとは実現する経路復元のようなものを行う dp[i + table[A[j]]] < dp[i] + 1 dp[i + table[A[j]]] dp i + table[A[j]] i table[A[j]] table A[j] A j dp[i] + 1 dp[i] dp i 1 dp[i + table[A[j]]] = dp[i] + 1 dp[i + table[A[j]]] dp i + table[A[j]] i table[A[j]] table A[j] A j dp[i] + 1 dp[i] dp i 1 ans = "" ans "" cur_cost = N cur_cost N for _ in range(dp[N]):
    #大きい数字から最上位に決めていきたいので、大きい数字から考える
    for j in range(len(A)):
        if cur_cost - table[A[j]] < 0:
            continue
        if dp[cur_cost - table[A[j]]] == dp[cur_cost] - 1:
            ans += str(A[j])
            cur_cost -= table[A[j]]
            break _ range(dp[N]) range dp[N] dp N for j in range(len(A)):
        if cur_cost - table[A[j]] < 0:
            continue
        if dp[cur_cost - table[A[j]]] == dp[cur_cost] - 1:
            ans += str(A[j])
            cur_cost -= table[A[j]]
            break j range(len(A)) range len(A) len A if cur_cost - table[A[j]] < 0:
            continue
         cur_cost - table[A[j]] < 0 cur_cost - table[A[j]] cur_cost table[A[j]] table A[j] A j 0 continue if dp[cur_cost - table[A[j]]] == dp[cur_cost] - 1:
            ans += str(A[j])
            cur_cost -= table[A[j]]
            break dp[cur_cost - table[A[j]]] == dp[cur_cost] - 1 dp[cur_cost - table[A[j]]] dp cur_cost - table[A[j]] cur_cost table[A[j]] table A[j] A j dp[cur_cost] - 1 dp[cur_cost] dp cur_cost 1 ans += str(A[j]) ans str(A[j]) str A[j] A j cur_cost -= table[A[j]] cur_cost table[A[j]] table A[j] A j break print(ans) print ans ans += str(A[j]) str(A[j]) ans N, M = map(int, input().split()) map(int, input().split()) N dp = [inf for i in range(N+1)] [inf for i in range(N+1)] dp M = map(int, input().split()) map(int, input().split()) M A = list(map(int, input().split())) list(map(int, input().split())) A table = [0,2,5,5,4,5,6,3,7,6] [0,2,5,5,4,5,6,3,7,6] table inf = (-1) * 10**5 (-1) * 10**5 inf ans = "" "" ans cur_cost -= table[A[j]] table[A[j]] cur_cost cur_cost = N N cur_cost
N, M = map(int, input().split())
A = list(map(int, input().split()))
table = [0,2,5,5,4,5,6,3,7,6]
A.sort(reverse=True)
inf = (-1) * 10**5
#dp[i] := ちょうどi本のマッチを使って作る整数の、最大桁数
dp = [inf for i in range(N+1)]
dp[0] = 0
for i in range(N+1):
    for j in range(len(A)):
        if i + table[A[j]] > N:
            continue
        if dp[i + table[A[j]]] < dp[i] + 1:
            dp[i + table[A[j]]] = dp[i] + 1
#こうすることで、答えの桁数が分る.
#あとは実現する経路復元のようなものを行う
ans = ""
cur_cost = N
#各桁について一つずつ答えを決めていく
for _ in range(dp[N]):
    #大きい数字から最上位に決めていきたいので、大きい数字から考える
    for j in range(len(A)):
        if cur_cost - table[A[j]] < 0:
            continue
        if dp[cur_cost - table[A[j]]] == dp[cur_cost] - 1:
            ans += str(A[j])
            cur_cost -= table[A[j]]
            break
print(ans)

