#include <bits/stdc++.h>
using namespace std;
long long gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b); }
const int MAXN = 100000;
const int MAXSTEP = 100;
int n;
int x[2 * MAXN], y[2 * MAXN];
double p2[MAXN + 1];
double p2a[MAXSTEP + 1];
void run() {
  scanf("%d", &n);
  for (int i = (0); i < (n); ++i) scanf("%d%d", &x[i], &y[i]);
  for (int i = (0); i < (n); ++i) x[i + n] = x[i], y[i + n] = y[i];
  p2[0] = 1;
  for (int i = (1); i <= (MAXN); ++i) p2[i] = p2[i - 1] / 2;
  for (int i = (1); i <= (MAXSTEP); ++i) p2a[i] = p2[i + 1] - p2[n];
  int maxstep = min(n - 2, MAXSTEP);
  double ret = 0;
  for (int j = (1); j <= (maxstep); ++j)
    for (int i = (0); i < (n); ++i) {
      double area = .5 * x[i] * y[i + j] - .5 * y[i] * x[i + j];
      int cnt = gcd(abs(x[i] - x[i + j]), abs(y[i] - y[i + j]));
      ret += p2a[j] * (area - .5 * cnt);
    }
  if (n <= 100) ret *= (1 / p2[n]) / (1 / p2[n] - 1 - n - n * (n - 1) / 2);
  ret = ret + 1;
  printf("%.9lf\n", ret);
}
int main() {
  run();
  return 0;
}
