#include using namespace std; #define all(x) (x).begin(), (x).end() #define sz(x) (int)(x).size() #define __fix ios_base::sync_with_stdio(0); cin.tie(0); typedef long long LL; typedef double LD; typedef pair < int, int > PII; typedef pair < LL, LL > PLL; typedef pair < LD, LD > PDD; typedef complex < double > CP; const int N = 4 * (3e3 + 7); int n; CP T[N]; bool vis[N]; map < PDD, int > MP; CP I(0, 1); PDD con(const CP &c) { return make_pair(real(c), imag(c)); } bool cmp(const CP &c1, const CP &c2) { return make_pair(real(c1), imag(c1)) < make_pair(real(c2), imag(c2)); } int main() { cin >> n; n *= 4; for(int i = 0; i < n; i++) { int a, b; cin >> a >> b; T[i] = CP(a, b); } sort(T, T + n, cmp); for(int i = 0; i < n; i++) MP[con(T[i])] = i; LD ans = 0; for(int i = 0; i < n; i++) { if(vis[i] == 1) continue; vis[i] = 1; for(int j = i + 1; j < n; j++) { if(vis[j]) continue; CP r = T[j] - T[i]; CP a1 = T[i] + r * (I + 1.0) / 2.0; CP a2 = T[i] + r * (1.0 - I) / 2.0; if(MP.find(con(a1)) != MP.end() && MP.find(con(a2)) != MP.end()) { int i1 = MP[con(a1)], i2 = MP[con(a2)]; if(vis[i1] || vis[i2]) continue; ans += norm(T[i] - T[i1]); vis[i] = vis[j] = vis[i1] = vis[i2] = true; break; } } } cout << fixed << setprecision(12) << ans << "\n"; return 0; }