#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using ll = long long; using ull = unsigned long long; const ll INF = 1e16; const ll MOD = 1e9 + 7; #define REP(i, n) for(ll i = 0; i < n; i++) int main() { ll n; cin >> n; vector m(n); REP(i, n){ cin >> m[i]; } vector dp(1 << n, INF); dp[0] = 0; REP(i, 1 << n){ REP(j, n){ if((i >> j) & 1){ ll sum = 0; REP(k, n){ if(((i ^ (1 << j)) >> k) & 1){ sum += m[k]; } } dp[i] = min(dp[i], dp[i ^ (1 << j)] + max(0LL, m[j] - (sum % 1000))); } } } cout << dp[(1 << n) - 1] << endl; }