#include <bits/stdc++.h>
using namespace std;
const int maxn = 4e5 + 10, mod = 1e9 + 7;
const long long inf = 5e15;
long long a[maxn];
int n;
long long solve(long long k) {
  long long L, R;
  {
    long long l = 0, r = inf;
    while (r - l > 1) {
      long long mid = (l + r) >> 1;
      long long cnt = 0;
      for (int i = 0; i < n; i++) cnt += (a[i] + mid - 1) / mid;
      if (cnt <= k)
        r = mid;
      else
        l = mid;
    }
    R = r;
  }
  {
    long long l = 1, r = inf;
    while (r - l > 1) {
      long long mid = (l + r) >> 1;
      long long cnt = 0;
      for (int i = 0; i < n; i++) cnt += a[i] / mid;
      if (cnt >= k)
        l = mid;
      else
        r = mid;
    }
    L = l;
  }
  for (int i = 0; i < n; i++) {
    L = min(L, a[i]);
  }
  assert(L <= R);
  map<long long, long long> mp;
  for (int i = 0; i < n; i++) {
    if (((a[i] + R - 1) / R) > (a[i] / L)) {
      long long x = a[i] / L;
      assert((a[i] + R - 1) / R == x + 1 && a[i] / R == x && a[i] / L == x &&
             (a[i] + L - 1) / L == x + 1);
      long long LL = min(L, a[i] / (x + 1)), RR = max(R, (a[i] + x - 1) / x);
      mp[LL] = max(mp[LL], RR);
    }
  }
  if (mp.empty()) return R - L;
  long long ans = inf, mx = R;
  if (L == 1) {
    if (mp.count(0)) ans = mp[0] - 1;
  } else {
    for (pair<long long, long long> p : mp) {
      ans = min(ans, mx - p.first);
      mx = max(mx, p.second);
    }
    ans = min(ans, mx - L);
  }
  return ans;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie();
  int q;
  cin >> q;
  while (q--) {
    long long n, m, k;
    cin >> n >> m >> k;
    long long bef = 0;
    ::n = 0;
    for (int i = 0; i < m; i++) {
      long long x;
      cin >> x;
      a[::n++] = x - bef;
      bef = x;
    }
    a[::n++] = n - bef;
    cout << solve(k + (::n)) << "\n";
  }
  return 0;
}
