#include <bits/stdc++.h>   const long long INF = 1e18;   const long long N = 2e5 + 50;   const long long MOD = 1e9 + 7;   using namespace std;   vector<long long> prime, graph[N];   long long n, k, a[N], m, z;   long long POWER(long long base, long long expo) {     long long ret = 1;     while (expo) {       if (expo & 1) ret = ret * base;       expo >>= 1;       base = base * base;     }     return ret;   }   void SOE(long long n) {     bool isPrime[n + 1];     memset(isPrime, true, sizeof(isPrime));     for (long long p = 2; p <= n; p++) {       if (isPrime[p]) {         for (long long i = p * p; i <= n; i += p) isPrime[i] = false;       }     }     for (long long i = 2; i <= n; i++) {       if (isPrime[i]) prime.push_back(i);     }   }   int main() {     long long test_case = 1;     cin >> test_case;     while (test_case--) {       cin >> n >> k >> z;       for (long long i = 0; i < n; i++) cin >> a[i];       vector<long long> v;       long long ans = 0, m = -1;       for (long long i = 0; i < n; i++) {         if (m < k) {           ans += a[i];           m++;         }       }       for (long long i = 1; i <= k; i++) {         for (long long c = 0; c <= z; c++) {           long long l = k, sum = 0, j = i, times = 0;           while (j < l && times < c) {             if (j == i) {               j--;               sum += a[j];               sum -= a[l];               l--;               times++;             }             if (j < l) {               j++;               sum += a[j];               sum -= a[l];               l--;             }           }           v.push_back(sum);         }       }       sort(v.begin(), v.end());       long long s = 0;       if (v.size() > 0) {         s = v[v.size() - 1];       }       cout << max(ans, ans + s) << endl;     }     return 0;   }   