#include <bits/stdc++.h>
using namespace std;
const long long MAXN = 1e5 + 5;
long long n;
pair<long long, long long> p[MAXN];
long double p2[MAXN];
long double p22[MAXN];
long double tot = 0.0;
long long gcd(long long a, long long b) {
  if (a < 0 || b < 0) return gcd(abs(a), abs(b));
  return (a == 0) ? b : gcd(b % a, a);
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cout << fixed << setprecision(15);
  cin >> n;
  p2[0] = p22[0] = 1.0;
  for (long long i = 1; i < MAXN; ++i)
    p2[i] = 0.5 * p2[i - 1], p22[i] = 2.0 * p22[i - 1];
  for (long long i = 0; i < n; ++i) {
    cin >> p[i].first >> p[i].second;
  }
  for (long long i = 1; i <= min(1LL * 100, n - 1); ++i)
    for (long long j = 0; j < n; ++j) {
      pair<long long, long long> x = p[j], y = p[(j + i) % n];
      long double prob;
      if (n > 100)
        prob = p2[i + 1];
      else
        prob = (p22[n - 1 - i] - 1) / (p22[n] - n - n * (n - 1) / 2 - 1);
      tot += prob * 0.5 *
             (x.first * y.second - x.second * y.first -
              gcd(x.first - y.first, x.second - y.second));
    }
  cout << tot + 1.0 << endl;
}
