//THINK ALOUD !! 
#include <bits/stdc++.h>
#define debug(x) cout << " -> [ " << #x << " = " << x << "]\n" 
#define debug2(x, y) cout << " -> [ " << #x << " = " << x << " , " << #y << " = " << y << " ]\n"
#define debug3(x, y, z) cout << " -> [ " << #x << " = " << x << " , " << #y << " = " << y << " , " << #z << " = " << z << " ]\n";
#define debug4(x, y, z, xx) cout << " -> [ " << #x << " = " << x << " , " << #y << " = " << y << " , " << #z << " = " << z << " , " << #xx << " = " << xx << " ]\n";

using namespace std;
using ll=long long int;
using lld=long double;
#define mp make_pair
#define pb push_back
#define accu accumulate 

#define pll pair<ll, ll>
#define pii pair<int, int> 
#define pci pair<char, int> 
#define pic pair<int, char> 
#define pls pair<ll, string>
#define psl pair<string, ll>
#define pis pair<int, string>
#define psi paid<string, int>
// #define x first 
// #define y second
#define fast ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);


#define rep(i, a, n) for (ll i = a; i < n; i++)
#define per(i, a, n) for (ll i = n-1; i >= a; i--)
#define repp(i, a, n, p) for (ll i = a; i < n; i += p)
#define all(c) (c).begin(), (c).end()
#define lla(c) (c).rbegin(), (c).rend()
#define print_arr(arr, n) for (int i = 0; i < n; i++) std::cout << arr[i] << ' '; std::cout << '\n';
#define mod 1000000007
#define primeSize 2000000
#define Size 1e6

template <typename t> inline void print(const t & v) {
    for (const auto& i : v) {
        std::cout << i << " ";
    } std::cout << '\n';
}

template <typename t> inline void printt(const t & v) { 
    for (const auto& i : v) { 
        std::cout << i.first << " " << i.second << '\n';
    } std::cout << '\n';
}

template <typename INT> INT GCD(INT a, INT b) { 
    //     if (b == 0) return a; 
    //     return gcd(b, a%b);
    return b ? gcd(b, a%b) : a;
}


template <typename INT> INT LCM(INT a, INT b) { 
    return a / gcd(a, b) * b;
}

template <typename INT> std::map<INT, int> factorize(INT n) { 
    map<INT, int> mp; 
    for (INT i = 2; i * i <= n; i++) { 
        while (n % i == 0) { 
            n /= i; 
            mp[i] ++;
        }
    }

    if (n > 1) mp[n] += 1;
    return mp;
}

ll bin_pow(ll a, ll b) {
    if (b == 0) return 1;
    long long res = bin_pow(a, b / 2);
    if (b % 2) return res * res * a;
    else return res * res;
}

int totalDigits(ll i) { 
    return i > 0 ? (int) log10 ((double) i) + 1 : 1;
}

vector<bool> isPrime(primeSize, true);
vector<int> arePrimes;
void make_seive() { 
    isPrime[0] = false; 
    isPrime[1] = false; 

    for (int i = 2; i <= sqrt(primeSize); i++) { 
        if (isPrime[i]) { 
            for (int j = i * 2; j <= primeSize; j += i) { 
                isPrime[j] = false; 
            }
        }
    }

    for (int i = 2; i < primeSize; i++) { 
        if (isPrime[i]) { 
            arePrimes.push_back(i); 
        }
    }
}


void solve() {
    int n;
    cin >> n;

    vector<ll> X;
    vector<ll> Y;

    for (int i = 0; i < 2 * n; i++) { 
        int a, b; 
        cin >> a >> b; 

        a = abs(a); 
        b = abs(b);
        if (a == 0) 
            X.push_back(b);
        else 
            Y.push_back(a);
    }

    sort(all(X));
    sort(lla(Y));

    lld ans = 0;
    lld ans2 = 0;
    for (int i = 0; i < n; i++) 
        ans += sqrt(X[i]*X[i] + Y[i]*Y[i]);

    sort(all(Y));
    for (int i = 0; i < n; i++) 
        ans2 += sqrt(X[i]*X[i] + Y[i]*Y[i]);

    
    lld final_ans = 0;
    final_ans = min(ans, ans2);
    cout << setprecision(20) << final_ans << '\n';
}

int main() { 
    fast; 
    int t = 1;
    //make_seive();
    cin >> t;
    while (t--) 
        solve(); 
}

/*
Tips:
-- for queries involving sum using queue or minimum sum of size k, do also consider prefix sum. 
*/

/*
   Build and running
   g++ --std=c++17 -Wall -Wextra -Wshadow -fsanitize=undefined -fsanitize=address FILE.cpp && ./a.out < in 

   Naming 
   -for types (class/struct name) UpperCamelCase: Point, Info, SegTree 
   -functions and variable lowerCamelCase: someMethod, someVariable 
   -MACROS and constants all capital letters separated by _ : SOME_MACRO, MAX_N, MOD

*/
