#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 5;
int K = 50;
long long x[maxn * 2], y[maxn * 2];
int n;
long long gcd(long long x, long long y) { return y == 0 ? x : gcd(y, x % y); }
long long cal(int i, int j) {
  return x[i] * y[j] - y[i] * x[j] - abs(gcd(x[i] - x[j], y[i] - y[j]));
}
long double power[maxn];
long double half[maxn];
int main() {
  cin >> n;
  for (int i = 1; i <= n; i++) {
    scanf("%lld%lld", &x[i], &y[i]);
    x[i + n] = x[i];
    y[i + n] = y[i];
  }
  power[0] = 1;
  half[0] = 1;
  for (int i = 1; i <= n; i++) {
    power[i] = power[i - 1] * 2.0;
    half[i] = half[i - 1] * 0.5;
  }
  long double ans = 0;
  long double z = power[n] - 1 - n - n * (n - 1) / 2.0;
  for (int i = 1; i <= n; i++) {
    for (int j = i + 1; j < i + min(n, K); j++) {
      long double now;
      if (n > 50)
        now = half[j - i + 1];
      else {
        now = (power[n - (j - i + 1)] - 1) / z;
      }
      ans += cal(i, j) * now;
    }
  }
  ans /= 2;
  ans += 1;
  printf("%.10Lf\n", ans);
  return 0;
}
