#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;
}
