#include <bits/stdc++.h>
using namespace std;
template <class T>
T abs(T x) {
  return x > 0 ? x : -x;
}
int n;
int m;
int x[200000];
int y[200000];
long double p[200001];
int gcd(int a, int b) { return a ? gcd(b % a, a) : b; }
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    scanf("%d%d", &x[i], &y[i]);
    x[i + n] = x[i];
    y[i + n] = y[i];
  }
  p[0] = 1;
  for (int i = 1; i <= 2 * n; i++) p[i] = p[i - 1] / 2;
  long double sum = 0, cx = 0, cy = 0, sx = 0, sy = 0;
  for (int i = 0; i < n; i++) {
    cx += x[i];
    cy += y[i];
    sx = sx / 2 + x[i];
    sy = sy / 2 + y[i];
  }
  for (int i = 0; i < n; i++) {
    cx -= x[i];
    cy -= y[i];
    sx -= x[i] * p[n - 1];
    sy -= y[i] * p[n - 1];
    sum -= x[i] * (sy / 4 - cy * p[n]) - y[i] * (sx / 4 - cx * p[n]);
    cx += x[i + n];
    cy += y[i + n];
    sx = sx / 2 + x[i + n];
    sy = sy / 2 + y[i + n];
  }
  sum /= 2;
  long double tmp2 = 1;
  for (int i = 0; i < n; i++) tmp2 /= 2;
  for (int i = 0; i < n; i++)
    for (int j = i + 1; j < i + n && j < i + 100; j++)
      sum -=
          gcd(abs(x[j] - x[i]), abs(y[j] - y[i])) * (p[(j - i) + 1] - tmp2) / 2;
  long double tmp = 1 + n + (long double)n * (n - 1) / 2;
  for (int i = 0; i < n; i++) tmp /= 2;
  printf("%.10f\n", (double)(sum / (1 - tmp)) + 1);
  return 0;
}
