#include using namespace std; void wrong() { printf("-1\n"); } void solve(vector > x, int E) { int n = x.size(); sort(x.begin(), x.end()); vector answer(n); if (E < x[0].first || E > x[n - 1].first) { return wrong(); } if (x[0].first == x[n - 1].first) { for (int i = 0; i < n; i++) { answer[i] = 1.0 / (double) n; } } else { // p1 * x1 + (1 - p1) * x_n = E answer[x[0].second] = (x[n - 1].first - E) / (double) (x[n - 1].first - x[0].first); // cerr << "answer " << answer[x[0].second] << endl; answer[x[n - 1].second] = 1.0 - answer[x[0].second]; } double sum = 0; for (int i = 0; i < n; i++) { printf("%.16lf ", answer[i]); sum += x[i].first * answer[x[i].second]; } assert(fabs(sum - E) < 1e-6); printf("\n"); } int main() { int T; scanf("%d", &T); assert(T >= 1 && T <= 100000); int sumN = 0; while (T--) { int n, E; scanf("%d %d", &n, &E); sumN += n; assert(n >= 1 && n <= (int) 1e3); assert(E >= 1 && E <= (int) 1e3); vector > x; for (int i = 0; i < n; i++) { int t; scanf("%d", &t); assert(t >= 1 && t <= (int) 1e3); x.push_back(make_pair(t, i)); } solve(x, E); } assert(sumN <= (int) 1e6); return 0; }