#include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define pb push_back #define mp make_pair #define pii pair #define vi vector #define vpii vector #define SZ(x) ((int)(x.size())) #define fi first #define se second #define FOR(i,n) for(int (i)=0;(i)<(n);++(i)) #define FORI(i,n) for(int (i)=1;(i)<=(n);++(i)) #define IN(x,y) ((y).find((x))!=(y).end()) #define ALL(t) t.begin(),t.end() #define FOREACH(i,t) for (typeof(t.begin()) i=t.begin(); i!=t.end(); i++) #define REP(i,a,b) for(int (i)=(a);(i)<=(b);++i) #define REPD(i,a,b) for(int (i)=(a); (i)>=(b);--i) #define REMAX(a,b) (a)=max((a),(b)); #define REMIN(a,b) (a)=min((a),(b)); #define DBG cerr << "debug here" << endl; #define DBGV(vari) cerr << #vari<< " = "<< (vari) <& s, ll l, ll m) { ll cost = 0; for (int i = 0; i < s.size(); ++i) { cost += abs(m + i*l-s[i]); } return cost; } int main() { ios_base::sync_with_stdio(0); int t; cin >> t; while (t--) { int n; ll l, a, b; cin >> n >> l >> a >> b; vector s(n); for (int i = 0; i < n; ++i) { cin >> s[i]; } sort(s.begin(), s.end()); int lo = a; int hi = b - n*l; ll res = 1e18; while (hi-lo > 10) { int m1 = lo+(hi-lo)/3; int m2 = hi-(hi-lo)/3; ll f1 = solve(s, l, m1); ll f2 = solve(s, l, m2); if (f1 < f2) { hi = m2-1; REMIN(res, f1); } else { lo = m1+1; REMIN(res, f2); } } for (int m = lo; m <= hi; ++m) { ll f = solve(s, l, m); REMIN(res, f); } cout << res << endl; } return 0; }