#include <bits/stdc++.h>
using namespace std;
void read(long long &x) {
  char ch = getchar();
  x = 0;
  while (!isdigit(ch)) ch = getchar();
  while (isdigit(ch)) x = x * 10 + ch - 48, ch = getchar();
}
const long long N = 4e5 + 5;
long long n, m, k, p[N], l[N];
long long L, R;
long long f(long long x, long long o) {
  long long s = 0;
  for (long long i = 1; i <= m; ++i) s += l[i] / x;
  if (o) {
    for (long long i = 1; i <= m; ++i) s += (l[i] % x != 0);
  }
  return s;
}
void getLR() {
  long long l = 1, r = n, mid;
  L = 1;
  while (l <= r) {
    mid = l + r >> 1;
    long long t = f(mid, 0);
    if (t < m + k)
      r = mid - 1;
    else
      L = mid, l = mid + 1;
  }
  l = 1, r = n, R = n;
  while (l <= r) {
    mid = l + r >> 1;
    long long t = f(mid, 1);
    if (t > m + k)
      l = mid + 1;
    else
      R = mid, r = mid - 1;
  }
}
pair<long long, long long> a[N];
long long mx[N];
long long solve() {
  long long tot = 0, res = 1e16;
  for (long long i = 1; i <= m; ++i) {
    long long x = l[i] / R + (l[i] % R != 0), y = l[i] / L;
    if (x > y) {
      a[++tot].first = l[i] / x;
      a[tot].second = y ? l[i] / y + (l[i] % y != 0) : 1e16;
    }
  }
  a[++tot] = {L, 1e16}, a[++tot] = {-1e16, R};
  sort(a + 1, a + tot + 1);
  for (long long i = 1; i <= tot; ++i) mx[i] = max(mx[i - 1], a[i].second);
  for (long long i = 2; i <= tot; ++i) res = min(res, mx[i - 1] - a[i].first);
  return res;
}
signed main() {
  long long T;
  read(T);
  while (T--) {
    read(n), read(m), read(k);
    ++m, p[1] = 0, p[m + 1] = n;
    for (long long i = 2; i <= m; ++i) read(p[i]);
    for (long long i = 1; i <= m; ++i) l[i] = p[i + 1] - p[i];
    getLR();
    if (L >= R) {
      puts("0");
      continue;
    }
    printf("%lld\n", solve());
  }
  return 0;
}
