#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //#include using namespace std; int n; long long int dp[1 << 15][1002]; long long int m[15]; int main() { scanf("%d", &n); dp[0][0] = 1LL; for (int i = 0;i < n;i++) { scanf("%lld", &m[i]); } for (int i = 0;i < (1 << n);i++) { for (int j = 0;j < 1002;j++) { dp[i][j] = LLONG_MAX; } } dp[0][0] = 0; for (int i = 0;i < (1 << n);i++) { for (int j = 0;j < 1002;j++) { if (dp[i][j] != LLONG_MAX) { long long int cost = dp[i][j]; for (int k = 0;k < n;k++) { if ((i >> k) & 1) { } else { long long int nex = cost + max(0LL,m[k] - j); int nn = j + m[k]; nn %= 1000; dp[i | (1 << k)][nn] = min(dp[i | (1 << k)][nn], nex); } } } } } long long int ans = LLONG_MAX; for (int i = 0;i < 1002;i++) { ans = min(ans, dp[(1 << n) - 1][i]); } printf("%lld\n", ans); return 0; }