#include <queue>#include <cstdio>using namespace std;const double eps = 1e-8;double total(priority_queue <double, vector<double>, greater<double> > pq, double r, double value = -1.0){ if(value > 0) pq.push(value); while(pq.size() > 1) { value = 0.0; value += pq.top(); pq.pop(); value += pq.top(); pq.pop(); pq.push(r * value); } return pq.top();}int main(void){ int t; scanf("%d", &t); while(t--) { int w, p, n, a; double rr; priority_queue <double, vector<double>, greater<double> > pq; scanf("%d%d%d", &w, &p, &n); rr = 100.0 / (100 - p); for (int i = 0; i < n; i++) { scanf("%d", &a); pq.push(a); } if(total(pq, rr) > w + eps) printf("-1n"); else { double l = 0.0, r = w; while(r - l > eps) { double m = (l + r) / 2.0; if(total(pq, rr, m) > w) r = m; else l = m; } printf("%lfn", l); } } return 0;}