#include <bits/stdc++.h>
using namespace std;
const int MAXN = 2e5, L = 64, V = 100;
int x[MAXN], y[MAXN], N;
double r, pow2[MAXN];
int gcd(int x, int y) { return y ? gcd(y, x % y) : x; }
int main() {
  pow2[0] = 1.0;
  for (int i = 1; i < MAXN; ++i) pow2[i] = pow2[i - 1] * 2.0;
  scanf("%d", &N);
  for (int i = 0; i < N; ++i) scanf("%d%d", &x[i], &y[i]);
  for (int i = 0; i < N; ++i)
    for (int k = 1; k < min(N, L); ++k) {
      int j = (i + k) % N;
      double p =
          N < 100 ? (pow2[N - k - 1] - 1) / (pow2[N] - 1 - N - N * (N - 1) / 2)
                  : 1.0 / pow2[k + 1];
      ;
      double v = -0.5 * (y[j] + y[i]) * (x[j] - x[i]) -
                 0.5 * gcd(abs(x[j] - x[i]), abs(y[j] - y[i]));
      r += p * v;
    }
  printf("%.12f", r + 1.0);
}
