#include <bits/stdc++.h>
using namespace std;
int n;
long long x[100005], y[100005];
long double P, ans, sum;
long long gcd(long long x, long long y) { return x ? gcd(y % x, x) : y; }
long long GCD(long long x, long long y) {
  if (x < 0) x = -x;
  if (y < 0) y = -y;
  if (x > y) swap(x, y);
  return gcd(x, y);
}
int main() {
  int i, j, k;
  scanf("%d", &n);
  for (i = 1; i <= n; i++) scanf("%I64d %I64d", &x[i], &y[i]);
  for (i = 1; i <= 90 && i < n; i++) {
    P = 1.0 / (pow(2, i + 1) -
               (1.0 + n + 0.5 * n * (n - 1)) / pow(2, n - i - 1)) -
        1.0 / (pow(2, n) - 1 - n - 0.5 * n * (n - 1));
    for (j = 1; j <= n; j++) {
      k = (j + i - 1) % n + 1;
      ans += (x[j] * y[k] - y[j] * x[k]) / 2.0 * P;
      sum += GCD(x[j] - x[k], y[j] - y[k]) * P;
    }
  }
  ans = ans - sum / 2.0 + 1;
  printf("%.10lf", (double)ans);
  return 0;
}
