1 //https://www.xinyoudui.com/ac/contest/747005D6B0006AA046984F6/problem/7250 CE 2 #include<bits/stdc++.h> 3 using namespace std; 4 const int M=15; 5 const int N=1e4+10; 6 const int N2=510; 7 struct node 8 { 9 int v; 10 int c; 11 }; 12 node a[M]; 13 int dp[N]; 14 int n,m; 15 int b[N2]; 16 int c[N2]; 17 bool cmp(node a,node b) 18 { 19 if(a.v!=b.v) 20 { 21 return a.v<b.v; 22 } 23 return a.c>b.c; 24 } 25 bool cmp2(node a,node b) 26 { 27 return a.c>b.c; 28 } 29 // void dfs(int x,int ans) 30 // { 31 // if(x>dp[n]) 32 // { 33 // if(ans==n) 34 // { 35 // for(int i=1;i<=dp[n];i++) 36 // { 37 // if(b[i]==0) 38 // { 39 // return; 40 // } 41 // } 42 // for(int i=1;i<=dp[n];i++) 43 // { 44 // if(b[i]>c[i]) 45 // { 46 // for(int j=1;j<=dp[n];j++) 47 // { 48 // c[i]=b[i]; 49 // } 50 // return; 51 // } 52 // else if(b[i]<c[i]) 53 // { 54 // return; 55 // } 56 // } 57 // } 58 // return; 59 // } 60 // for(int i=1;i<=m;i++) 61 // { 62 // b[x]=a[i].c; 63 // dfs(x+1,ans+a[i].v); 64 // b[x]=0; 65 // } 66 // } 67 int main() 68 { 69 cin>>n>>m; 70 for(int i=1;i<=m;i++) 71 { 72 cin>>a[i].c; 73 if(a[i].c==1) 74 { 75 a[i].v=2; 76 } 77 else if(a[i].c==2||a[i].c==3||a[i].c==5) 78 { 79 a[i].v=5; 80 } 81 else if(a[i].c==4) 82 { 83 a[i].v=4; 84 } 85 else if(a[i].c==6||a[i].c==9) 86 { 87 a[i].v=6; 88 } 89 else if(a[i].c==7) 90 { 91 a[i].v=3; 92 } 93 else 94 { 95 a[i].v=7; 96 } 97 } 98 sort(a+1,a+1+m,cmp); 99 // for(int i=1;i<=m;i++) 100 // { 101 // cout<<a[i].c<<' '<<a[i].v<<endl; 102 // } 103 for(int i=1;i<=m;i++) 104 { 105 for(int j=a[i].v;j<=n;j++) 106 { 107 int d=dp[j]; 108 dp[j]=max(dp[j],dp[j-a[i].v]+1); 109 if(d!=dp[j]) 110 { 111 c[dp[j]]=a[i].c; 112 } 113 } 114 } 115 // cout<<dp[n]; 116 // dfs(1,0); 117 sort(c+1,c+1+n,cmp2); 118 for(int i=1;i<=dp[n];i++) 119 { 120 cout<<c[i]; 121 } 122 return 0; 123 }