#include #include using namespace std; int find_min (vector & reseni){ int min = reseni[0]; for (int i = 0 ; i < reseni.size() ; ++i ){ if (reseni[i] & reseni, vector& sums, int n, int k){ int a,b,c; for (int i = 0; i < n; ++i ){ a = i; c = a + k + 1; for (int j = a + 1 ; j < c ; ++j) { b = j; reseni.push_back(sums[a]+sums[b]+sums[c]); } } } void natahni (vector& pockets, int n){ for (int i = 0 ; i < 10 * n; ++i){ pockets.push_back(pockets[i]); } } void count_sums ( vector& pockets, vector& sums, int k, int n){ for (int i = 0; i < 4*n ; ++i) { for (int j = 0; j < k; ++j){ sums[i]+=pockets[i+j]; } } } int main () { int n; vector pockets, sums, reseni; while ( cin >> n, n > 0 ){ int k = (n -1 ) /2 ; for (int i = 0; i < n; ++i){ int tmp; cin >> tmp; pockets.push_back(tmp); sums.push_back(0); } natahni (pockets,n); natahni (sums,n); count_sums (pockets, sums, k, n); generuj_reseni (reseni, sums, n, k); cout << find_min ( reseni) << endl; pockets.clear(); pockets.resize(0); sums.clear(); sums.resize(0); reseni.clear(); reseni.resize(0); } return 0; }