func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 3e5 + 10;   long long n, sum, n1, pick, ans, t, a[N], b[N], f[N], f1[N], m, t1;   int main() {     scanf( %lld , &n);     for (int i = 1; i <= 8; i++) {       scanf( %lld , &a[i]);       sum = sum + a[i] * i;     }     if (sum <= n) return printf( %lld n , sum), 0;     n1 = std::max((long long)0, n - 840), n = n - n1;     for (int i = 1; i <= 8; i++) {       if (a[i] < n1 / i)         pick = a[i];       else         pick = n1 / i;       if (a[i] - pick < 10) pick = std::max((long long)0, a[i] - 10);       ans = ans + pick * i, n1 = n1 - pick * i, a[i] = a[i] - pick;     }     n += n1;     for (int i = 1; i <= 8; i++) {       t = 1;       while (a[i] > 0) {         t1 = std::min(t, a[i]);         a[i] = a[i] - t1;         f[++m] = t1 * i;         t <<= 1;       }     }     for (long long i = 1; i <= m; i++)       for (long long j = n; j >= f[i]; j--)         f1[j] = std::max(f1[j], f1[j - f[i]] + f[i]);     printf( %lld n , ans + f1[n]);     return 0;   }   