#include #include #include #include #define int ll using namespace std; typedef long long ll; typedef pair ii; const int N=300*1000+10; int t, it[N] , las[N] , n , k , a[N], c; bool over(int a, int b){ int tmp; return __builtin_mul_overflow(a, b, &tmp); } bool check(int ted){ if(ted == 0) return true; fill(it , it+ted , -1); int cur=0 , ok=0; for(int i=0 ; i= k){ cur = (cur+1)%ted; } if(it[cur] == -1){ las[cur] = a[i]; it[cur] ++; if(it[cur] >= k) ok ++; cur ++; }else if(!over(las[cur], c) && a[i] >= las[cur]*c){ las[cur] = a[i]; it[cur] ++; if(it[cur] >= k) ok ++; cur ++; } cur %= ted; } return (ok == ted); } void solve(){ cin >> n >> k >> c; k--; for(int i=0 ; i> a[i]; sort(a , a+n); int l=-1 , r=n+1; while(r-l>1){ int mid = (l+r)/2; if(check(mid)) l = mid; else r = mid; } cout << l << "\n"; } int32_t main(){ cin >> t; while(t--){ solve(); } return 0; }