#include <bits/stdc++.h>
using namespace std;
void solve() {
  long long int i, x, m, y, j, k, h, n, w, k1, k2, k3, q;
  cin >> n;
  vector<pair<long long int, long long int>> v;
  vector<long long int> fi, si;
  map<pair<long long int, long long int>, long long int> mp;
  for (i = 0; i < n; i++) {
    cin >> k1 >> k2;
    if (!mp[{k1, k2}]) {
      mp[{k1, k2}]++;
      mp[{k2, k1}]++;
      v.push_back({k1, k2});
    }
  }
  n = v.size();
  k1 = v[0].first;
  k2 = v[0].second;
  set<long long int> s;
  for (i = 1; i * i <= k1; i++) {
    if (k1 % i == 0) {
      s.insert(i);
      s.insert(k1 / i);
    }
  }
  for (i = 1; i * i <= k2; i++) {
    if (k2 % i == 0) {
      s.insert(i);
      s.insert(k2 / i);
    }
  }
  while (!s.empty()) {
    x = *s.begin();
    s.erase(x);
    if (x == 1) continue;
    for (j = 0; j < n; j++) {
      if (v[j].first % x && v[j].second % x) break;
    }
    if (j == n) {
      cout << x << endl;
      return;
    }
  }
  cout << -1 << endl;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  ;
  long long int i, j, l, k, t, n;
  t = 1;
  for (i = 1; i <= t; i++) {
    solve();
  }
}
