#include <bits/stdc++.h>
using namespace std;
const int inf(1010101010);
int n;
struct pt {
  long long x, y;
};
void rr(pt& p) { cin >> p.x >> p.y; }
pt p[1005];
long long sgn(pt& p1, pt& p2, pt& p3) {
  return (p1.x - p3.x) * (p2.y - p3.y) - (p2.x - p3.x) * (p1.y - p3.y);
}
long long fdiv(long long x, long long y) { return (x - (x % y + y) % y) / y; }
long long cdiv(long long x, long long y) {
  if (x % y == 0) return x / y;
  return fdiv(x, y) + 1;
}
void must_neg(pt& p1, pt& p2, pt& p3, long long& lb, long long& ub) {
  long long b(p3.x * (p2.y - p3.y) + (p2.x - p3.x) * (p1.y - p3.y));
  long long a(p2.y - p3.y);
  if (a == 0) {
    if (b < 0) lb = inf;
  }
  if (a > 0) {
    ub = min(ub, fdiv(b, a));
  }
  if (a < 0) {
    lb = max(lb, cdiv(-b, -a));
  }
}
int main() {
  cin >> n;
  for (int i(0); i < (n); i++) rr(p[i]);
  long long lb(min(p[0].x, p[1].x)), ub(max(p[0].x, p[1].x));
  for (int i(1); i < (n - 1); i++) {
    must_neg(p[0], p[i], p[(i + 1) % n], lb, ub);
  }
  cout << max(0LL, ub - lb + 1) << endl;
}
