/**
 *   @FileName	d.cpp
 *   @Author	kanpurin
 *   @Created	2020.10.10 22:08:23
**/

#include "bits/stdc++.h" 
using namespace std; 
typedef long long ll;

 
template< int MOD >
struct mint {
public:
    long long x;
    mint(long long x = 0) :x((x%MOD+MOD)%MOD) {}
    mint(std::string &s) {
        long long z = 0;
        for (int i = 0; i < s.size(); i++) {
            z *= 10;
            z += s[i] - '0';
            z %= MOD;
        }
        this->x = z;
    }
    mint& operator+=(const mint &a) {
        if ((x += a.x) >= MOD) x -= MOD;
        return *this;
    }
    mint& operator-=(const mint &a) {
        if ((x += MOD - a.x) >= MOD) x -= MOD;
        return *this;
    }
    mint& operator*=(const mint &a) {
        (x *= a.x) %= MOD;
        return *this;
    }
    mint& operator/=(const mint &a) {
        long long n = MOD - 2;
        mint u = 1, b = a;
        while (n > 0) {
            if (n & 1) {
                u *= b;
            }
            b *= b;
            n >>= 1;
        }
        return *this *= u;
    }
    mint operator+(const mint &a) const {
        mint res(*this);
        return res += a;
    }
    mint operator-() const {return mint() -= *this; }
    mint operator-(const mint &a) const {
        mint res(*this);
        return res -= a;
    }
    mint operator*(const mint &a) const {
        mint res(*this);
        return res *= a;
    }
    mint operator/(const mint &a) const {
        mint res(*this);
        return res /= a;
    }
    friend std::ostream& operator<<(std::ostream &os, const mint &n) {
        return os << n.x;
    }
    friend std::istream &operator>>(std::istream &is, mint &n) {
        long long x;
        is >> x;
        n = mint(x);
        return is;
    }
    bool operator==(const mint &a) const {
        return this->x == a.x;
    }
    mint pow(long long k) const {
        mint ret = 1;
        mint p = this->x;
        while (k > 0) {
            if (k & 1) {
                ret *= p;
            }
            p *= p;
            k >>= 1;
        }
        return ret;
    }
};
constexpr int MOD = 1e9 + 7;
int main() {
    int t;cin >> t;
    while(t--) {
        ll n,a,b;cin >> n >> a >> b;
        if (b > a) swap(a,b);
        ll m = min(n-a,b-1);
        auto k = (mint<MOD>(2) * (n-a+1)*m-mint<MOD>(m)*(m+1)+mint<MOD>(a-b+1)*(n-a+1));
        auto p = mint<MOD>(n-a+1)*(n-b+1);
        cout << p * p - k * k << endl;
    }
    return 0;
}
#include <cstdio>
#include <cctype>
#define rr register
using namespace std;
const int N=111;
int f[N],siz[N],x[N],y[N],n;
inline signed iut(){
	rr int ans=0,f=1; rr char c=getchar();
	while (!isdigit(c)) f=(c=='-')?-f:f,c=getchar();
	while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();
	return ans*f;
}
inline signed getf(int u){return f[u]==u?u:f[u]=getf(f[u]);}
inline void uni(int x,int y){
	rr int fa=getf(x),fb=getf(y);
	if (fa==fb) return;
	if (siz[fa]>siz[fb]) fa^=fb,fb^=fa,fa^=fb;
	siz[fb]+=siz[fa],f[fa]=fb;
}
inline bool check(double mid){
	for (rr int i=1;i<n+3;++i) f[i]=i,siz[i]=1;
	for (rr int i=1;i<=n;++i){
		if (mid*2>100-y[i]) uni(i,n+1);
		if (y[i]+100<2*mid) uni(i,n+2); 
		for (rr int j=i+1;j<=n;++j)
		if ((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j])<mid*mid*4)
		    uni(i,j);
	}
	return getf(n+1)==getf(n+2);
}
signed main(){
	n=iut();
	for (rr int i=1;i<=n;++i)
	    x[i]=iut(),y[i]=iut();
	rr double l=0,r=100;
	while (l+1e-6<r){
		rr double mid=(l+r)/2;
		if (check(mid)) r=mid;
		    else l=mid;
	}
	return !printf("%lf",l);
}