#include <bits/stdc++.h>
using namespace std;
const int N = 4e5 + 9;
const long long mod = 998244353;
const long long Inf = 1e18;
long long s[N], p[N];
vector<pair<long long, long long>> g;
pair<long long, long long> stk[N];
int t, T;
long long down(long long a, long long b) { return a / b; }
long long up(long long a, long long b) { return (a + b - 1) / b; }
void solve() {
  long long n, m, k;
  scanf("%lld%lld%lld", &n, &m, &k);
  for (int i = (1); i < (m + 1); ++i) scanf("%lld", &p[i]);
  p[++m] = n;
  for (int i = (1); i < (m + 1); ++i) s[i] = p[i] - p[i - 1];
  long long MIN = Inf, MAX = 0, l = 1, r = Inf, K = k + m;
  while (l < r) {
    long long sum = 0, mid = l + r >> 1;
    for (int i = (1); i < (m + 1); ++i) sum += down(s[i], mid);
    if (sum >= K)
      l = mid + 1;
    else
      r = mid;
  }
  MIN = l - 1;
  l = 1, r = Inf;
  while (l < r) {
    long long sum = 0, mid = l + r >> 1;
    for (int i = (1); i < (m + 1); ++i) sum += up(s[i], mid);
    if (sum <= K)
      r = mid;
    else
      l = mid + 1;
  }
  MAX = l;
  long long ans = MAX - MIN;
  g.clear();
  for (int i = (1); i < (m + 1); ++i) {
    long long L = up(s[i], MAX), R = down(s[i], MIN);
    if (L <= R) continue;
    g.push_back({MIN - down(s[i], L), (R ? up(s[i], R) : Inf) - MAX});
  }
  if (g.size() == 0) {
    printf("%lld\n", ans);
    return;
  }
  sort(g.begin(), g.end());
  int c = 0;
  for (int i = (0); i < (g.size()); ++i) {
    while (c && stk[c].second < g[i].second) --c;
    stk[++c] = g[i];
  }
  long long add = min(stk[1].second, stk[c].first);
  for (int i = (1); i < (c); ++i) {
    add = min(add, stk[i].first + stk[i + 1].second);
  }
  ans += add;
  printf("%lld\n", ans);
}
int main() {
  scanf("%d", &t);
  for (int i = (0); i < (t); ++i) solve();
}
