#include <bits/stdc++.h>
using namespace std;
long long gi() {
  char cc = getchar();
  long long cn = 0, flus = 1;
  while (cc < '0' || cc > '9') {
    if (cc == '-') flus = -flus;
    cc = getchar();
  }
  while (cc >= '0' && cc <= '9') cn = cn * 10 + cc - '0', cc = getchar();
  return cn * flus;
}
const long long N = 4e5 + 5;
const long long inf = 1e16;
long long top, n, m, K, a[N], L, R;
struct node {
  long long a, b;
} b[N];
long long Ceil(double x) {
  long long ans = (long long)x;
  return ans + (x > ans);
}
long long Floor(double x) { return (long long)x; }
long long check1(long long x) {
  long long ans = 0;
  for (register long long i = (1); i <= (m); ++i) ans += Ceil(1.0 * a[i] / x);
  return ans <= K;
}
long long check2(long long x) {
  long long ans = 0;
  for (register long long i = (1); i <= (m); ++i) ans += Floor(1.0 * a[i] / x);
  return ans >= K;
}
multiset<long long> S;
multiset<long long>::iterator it;
bool cmp(node x, node y) { return x.a > y.a; }
void solve() {
  n = gi(), m = gi(), K = gi();
  long long bef = 0, x;
  for (register long long i = (1); i <= (m); ++i)
    x = gi(), a[i] = x - bef, bef = x;
  a[++m] = n - bef, K += m;
  long long l = 1, r = n;
  L = 1;
  while (l <= r) {
    long long mid = (l + r) >> 1;
    if (check2(mid))
      L = mid, l = mid + 1;
    else
      r = mid - 1;
  }
  l = 1, r = n, R = n;
  while (l <= r) {
    long long mid = (l + r) >> 1;
    if (check1(mid))
      R = mid, r = mid - 1;
    else
      l = mid + 1;
  }
  if (R <= L) return puts("0"), void();
  long long Ans = n;
  S.clear(), top = 0, S.insert(R);
  for (register long long i = (1); i <= (m); ++i) {
    long long ll = Ceil(1.0 * a[i] / R);
    long long rr = Floor(1.0 * a[i] / L);
    if (ll <= rr) continue;
    long long u = a[i] / ll, v = inf;
    if (rr) v = Ceil(1.0 * a[i] / rr);
    b[++top] = (node){u, v}, S.insert(v);
  }
  sort(b + 1, b + top + 1, cmp), it = S.end();
  --it;
  Ans = min(Ans, (*it) - L);
  for (long long i = 1; i <= top; ++i) {
    S.erase(S.find(b[i].b)), it = S.end(), --it;
    Ans = min(Ans, (*it) - b[i].a);
  }
  printf("%lld\n", Ans);
}
signed main() {
  long long T = gi();
  while (T--) solve();
  return 0;
}
