#include <bits/stdc++.h>
using namespace std;
const int maxN = 4e5 + 10;
const long long INF = 1e18;
int T;
long long n, m, k;
long long M, K;
long long a[maxN + 1];
vector<pair<long long, long long> > t;
inline long long read() {
  long long num = 0, f = 1;
  char ch = getchar();
  while (!isdigit(ch)) {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (isdigit(ch)) num = (num << 3) + (num << 1) + (ch ^ 48), ch = getchar();
  return num * f;
}
inline long long up(long long x, long long y) { return (x + y - 1) / y; }
inline long long down(long long x, long long y) { return x / y; }
inline void work() {
  t.clear();
  n = read(), m = read(), k = read();
  M = m + 1, K = m + k + 1;
  long long last = 0, l, r, L, R;
  for (int i = 1; i <= m; i++) {
    long long x = read();
    a[i] = x - last;
    last = x;
  }
  a[M] = n - last;
  l = 1, r = n, L = 0;
  while (l <= r) {
    long long mid = (l + r) >> 1, s = 0;
    for (int i = 1; i <= M; i++) s += down(a[i], mid);
    if (s >= K)
      L = mid, l = mid + 1;
    else
      r = mid - 1;
  }
  l = 1, r = n, R = 0;
  while (l <= r) {
    long long mid = (l + r) >> 1, s = 0;
    for (int i = 1; i <= M; i++) s += up(a[i], mid);
    if (s <= K)
      R = mid, r = mid - 1;
    else
      l = mid + 1;
  }
  for (int i = 1; i <= M; i++) {
    if (up(a[i], R) <= down(a[i], L)) continue;
    long long tl = 0, tr = INF;
    l = 1, r = n;
    while (l <= r) {
      long long mid = (l + r) >> 1;
      if (up(a[i], mid) <= down(a[i], L))
        tr = mid, r = mid - 1;
      else
        l = mid + 1;
    }
    l = 1, r = n;
    while (l <= r) {
      long long mid = (l + r) >> 1;
      if (up(a[i], R) <= down(a[i], mid))
        tl = mid, l = mid + 1;
      else
        r = mid - 1;
    }
    t.push_back(make_pair(tl, tr));
  }
  sort(t.begin(), t.end());
  long long ans = INF, mx = R;
  for (int i = 0; i < t.size(); i++) {
    ans = min(ans, mx - t[i].first);
    mx = max(mx, t[i].second);
  }
  ans = min(ans, mx - L);
  printf("%lld\n", ans);
}
int main() {
  T = read();
  while (T--) work();
  return 0;
}
