#include <bits/stdc++.h>
using namespace std;
const int maxn = 200000 + 10;
int n;
long long x[maxn], y[maxn];
long double mi[80];
long double mi2(int x) {
  if (x < 80)
    return mi[x];
  else
    return 0.;
}
long long gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b); }
int main() {
  mi[0] = 1.;
  for (int i = 1; i < 80; i++) mi[i] = mi[i - 1] / 2.;
  scanf("%d", &n);
  for (int i = 0, a, b; i < n; i++) scanf("%d%d", &a, &b), x[i] = a, y[i] = b;
  long double x0 = -(int)1e9 - 5, y0 = 0;
  long double area = 0, edge = 0;
  long double proball =
      1. - n * mi2(n) - (1ll * n * (n - 1) / 2) * mi2(n) - mi2(n);
  for (int i = 0; i < n; i++)
    for (int d = 1, j = (i + 1) % n; d < n && d <= 70; j = (j + 1) % n, d++) {
      long double prob = (1 - mi2(n - d - 1)) * mi2(d - 1) / 2. / 2.;
      prob /= proball;
      area += ((x[i] - x0) * (y[j] - y0) - (x[j] - x0) * (y[i] - y0)) * prob;
      edge += abs(gcd(x[i] - x[j], y[i] - y[j])) * prob;
    }
  area /= 2;
  edge /= 2;
  long double ans = fabs(area) - edge + 1;
  printf("%.11lf\n", (double)ans);
  return 0;
}
