#include <iostream>#include <cstdio>#include <queue>#include <algorithm>using namespace std;const int maxn=200000+1000;int a[maxn];priority_queue<int> qn;priority_queue<int> qn2;int main(){ int t; scanf("%d",&t); while(t--) { int n,k,m; scanf("%d%d%d",&n,&m,&k); for(int i=0;i<n;i++) { scanf("%d",&a[i]); } sort(a,a+n); int be=0; while(!qn.empty()) qn.pop(); while(!qn2.empty()) qn2.pop(); for(int i=n-1;i>=0;i--) { if(a[i]>k) continue; if(i<be) break; while(a[be]+a[i]<=k&&be<i) { qn.push(a[be]); be++; } if(!qn.empty()) { int cur=qn.top(); qn.pop(); cur=cur*a[i]; qn2.push(cur); } if(be>=i) break; } int x,y; while(!qn.empty()) { x=qn.top(); qn.pop(); if(!qn.empty()) { y=qn.top(); qn.pop(); x=x*y; qn2.push(x); } else break; } long long ans=0; for(int i=0;i<m;i++) { if(qn2.empty()) break; int cur=qn2.top(); ans=ans+cur; qn2.pop(); } printf("%lldn",ans); } return 0;}