int nums[10] = {0,2,5,5,4,5,6,3,7,6}; int main() { int n, m; cin >> n >> m; vector<int> can(m); for (int i = 0; i < m; i++) { cin >> can[i]; }; sort(can.begin(), can.end(), greater<int>()); vector<int> dp(1+n, 0); for (int i = 0; i < m; i++) { int x = can[i], cost = nums[x]; for (int i = cost; i <= n; i++) { if (i - cost == 0 || dp[i - cost] != 0) dp[i] = max(dp[i], dp[i - cost] * 10 + x); } } cout << dp[n] << endl; }