#include #include using namespace std; int get(int *data, int count, int k) { if (count == 3) { int sum = 0; for (int i = 0; i < count; i++) sum += data[i]; return sum; } int sum = 0; int mo = -1; multiset cs; list ls; for (int i = 0; i < k; i++) { sum += data[i]; ls.push_back(data[i]); cs.insert(data[i]); } //printf("sum = %d, k = %d, max: %d\n", sum, k, *cs.rbegin()); for (int i = k; i < count + k; i++) { int n = sum - (*cs.rbegin()); //printf("i = %d, n = %d, sum = %d\n", i, n, sum); if (n < mo || mo == -1) mo = n; sum -= ls.front(); sum += data[i%count]; ls.pop_front(); ls.push_back(data[i%count]); cs.erase(data[i-k]); cs.insert(data[i%count]); } sum = 0; for (int i = 0; i < count; i++) sum += data[i]; return sum + mo; } int main() { int data[200000]; int poc, k; scanf("%d", &poc); while (poc > 0) { for (int i = 0; i < poc; i++) scanf("%d", &data[i]); k = poc / 2; printf("%d\n", get(data, poc, k)); scanf("%d", &poc); } }