#include #include using namespace std; const int INF = 1000000; int main(){ int N; cin >> N; vector M(N); for (int i = 0; i < N; i++){ cin >> M[i]; } vector dp(1 << N, INF); dp[0] = 0; for (int i = 0; i < (1 << N); i++){ int sum = 0; for (int j = 0; j < N; j++){ if (i >> j & 1){ sum += M[j]; } } sum %= 1000; for (int j = 0; j < N; j++){ if (!(i >> j & 1)){ dp[i | (1 << j)] = min(dp[i | (1 << j)], dp[i] + max(M[j] - sum, 0)); } } } cout << dp[(1 << N) - 1] << endl; }