//https://ncode.syosetu.com/n4830bu/286/ #include using namespace std; int main() { int N; cin >> N; vector M(N); for (auto&& m : M) { cin >> m; } vector maine(1 << N, vector(N, 100000000)); vector SUM(1 << N); for (int bit = 1; bit < (1 << N); bit++) { for (int i = 0; i < N; i++) { if (bit == (1 << i)) { maine[bit][i] = M[i]; SUM[bit] = M[i]; } else if (bit & (1 << i)) { SUM[bit] = SUM[bit ^ (1 << i)] + M[i]; for (int j = 0; j < N; j++) { if ((bit ^ (1 << i)) & (1 << j)) { maine[bit][i] = min(maine[bit][i], maine[bit ^ (1 << i)][j] + max(0, M[i] - (SUM[bit ^ (1 << i)] % 1000))); } } } } } int ans = 1e9; for (int i = 0; i < N; i++) { ans = min(ans, maine[(1 << N) - 1][i]); } cout << ans << endl; }