#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e5 + 5;
long double pow2[MAXN];
int N;
pair<long long, long long> pt[MAXN];
long long gcd(long long a, long long b) {
  if (b) {
    return gcd(b, a % b);
  }
  return a;
}
int main() {
  pow2[0] = 1;
  cin >> N;
  for (int i = 0; i < N; ++i) {
    pow2[i + 1] = pow2[i] * 2;
    cin >> pt[i].first >> pt[i].second;
  }
  long double K = pow2[N] - 1 - N - N * (N - 1) / 2;
  long double A = 0;
  long double b = 0;
  for (int l = 1; l <= min(N - 2, 100); ++l) {
    for (int i = 0; i < N; ++i) {
      long double p;
      if (N > 100) {
        p = 1 / pow2[l + 1];
      } else {
        p = (pow2[N - l - 1] - 1) / K;
      }
      int j = (i + l) % N;
      A += p * (pt[i].first * pt[j].second - pt[i].second * pt[j].first);
      b += p * gcd(abs(pt[i].first - pt[j].first),
                   abs(pt[i].second - pt[j].second));
    }
  }
  long double ans = 0;
  ans = A / 2 - b / 2 + 1;
  cout << fixed << setprecision(10);
  cout << ans << endl;
}
