#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
#include <stack>
#include <limits.h>
#include <climits>
#include <map>
#include <unordered_map>
#define _USE_MATH_DEFINES
#include <cmath>
#include <set>
#include <unordered_set>
#include <iterator>
#include <deque>
#include <assert.h>
#include <cstdlib>
#pragma GCC target ("avx2")
#pragma GCC optimization ("O3")
#pragma GCC optimization ("unroll-loops")
using namespace std;
typedef unsigned long long ull;
typedef long long ll;
ull min(ull x, ull y){ if (x<y) return x; return y;}
ull max(ull x, ull y){ if (x<y) return y; return x;}
ll min(ll x, ll y){ if (x<y) return x; return y;}
ll max(ll x, ll y){ if (x<y) return y; return x;}
double min(double x, double y){ if (x<y) return x; return y;}
double max(double x, double y){ if (x<y) return y; return x;}
// s.lower_bound(val) -> iterator to first element >= val (or s.end() if not present)
// s.upper_bound(val) -> iterator to the first element > val (or s.end() if not present)
ull gcd(ull x, ull y){
    if (!x) return y;
    if (!y) return x;
    if (x>y) swap(x,y);
    return gcd(x, y%x);
}
ull inv(ull a, ull c){ // a,c are coprime and a<c
    if (a==1){
        return 1;
    }
    return ((c-(c/a))*inv(c%a,c))%c;
}
void printv(vector<int> &a){
    int n = a.size();
    for (int i = 0; i < n; ++i){
        cout<<a[i]<<" ";
    }
    cout<<" END\n";
}

bool comp(ll A, ll B){
    return (A*A) < (B*B);
}

int main(){
    
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    int t;
    cin>>t;

    while (t--){
        
        vector<ll> a, b;

        int n;
        cin>>n;

        for (int i = 0; i < 2*n; ++i){
            ll x, y;
            cin>>x>>y;
            if (x==0) a.push_back(y);
            else b.push_back(x);
        }

        sort(a.begin(), a.end(), comp);
        sort(b.begin(), b.end(), comp);

        double ans = 0;
        for (int i = 0; i < n; ++i){
            ans += sqrt((double)(a[i]*a[i]) + (double)(b[i]*b[i]));
        }

        printf("%.10f\n", ans);

    }

    return 0;
}