func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 4e5 + 10;   long long gi() {     long long x = 0, o = 1;     char ch = getchar();     while ((ch <  0  || ch >  9 ) && ch !=  - ) ch = getchar();     if (ch ==  - ) o = -1, ch = getchar();     while (ch >=  0  && ch <=  9 ) x = x * 10 + ch -  0 , ch = getchar();     return x * o;   }   int n, tt;   long long m, k, d[N];   pair<long long, long long> p[N];   int main() {     int T = gi();     while (T--) {       m = gi();       n = gi();       k = gi();       for (int i = 1; i <= n; i++) d[i] = gi();       d[++n] = m;       for (int i = n; i; i--) d[i] -= d[i - 1];       if (!k) {         cout << *max_element(d + 1, d + n + 1) - *min_element(d + 1, d + n + 1)              <<   n ;         continue;       }       long long l = 1, r = 1e15;       while (l < r) {         long long mid = (l + r + 1) >> 1, sum = 0;         for (int i = 1; i <= n; i++) {           sum += d[i] / mid - 1;           if (sum >= k) break;         }         if (sum >= k)           l = mid;         else           r = mid - 1;       }       long long mx = l;       l = 1, r = 1e15;       while (l < r) {         long long mid = (l + r) >> 1, sum = 0;         for (int i = 1; i <= n; i++) {           sum += (d[i] + mid - 1) / mid - 1;           if (sum > k) break;         }         if (sum <= k)           r = mid;         else           l = mid + 1;       }       long long mn = l;       tt = 0;       for (int i = 1; i <= n; i++) {         if ((d[i] + mn - 1) / mn > d[i] / mx) {           long long t = d[i] / mx;           p[++tt].first = d[i] / (t + 1);           t = (d[i] + mn - 1) / mn;           if (t == 1)             p[tt].second = 1e18;           else             p[tt].second = (d[i] + t - 2) / (t - 1);         }       }       sort(p + 1, p + tt + 1);       long long low = mn, ans = 1e18;       for (int i = 1, j; i <= tt; i = j + 1) {         j = i;         while (j < tt && p[j + 1].first == p[i].first) ++j;         ans = min(ans, low - p[i].first);         for (int k = i; k <= j; k++) low = max(low, p[k].second);       }       ans = min(ans, low - mx);       cout << ans <<   n ;     }     return 0;   }   