#include <bits/stdc++.h>
using namespace std;
const int INF = 1e9 + 10, MN = 2e5 + 10;
const long double eps = 1e-6;
pair<int, int> p[MN], L[MN], R[MN];
int n;
bool check(long long val) {
  long long Sq = ceil(sqrt(val) + eps);
  while (Sq * Sq > val) --Sq;
  long long T = L[n].first - L[n].second;
  if (T * T <= val) return true;
  for (int i = 0; i < n; ++i) {
    int x = p[i].first, l, r;
    if (x < 0)
      l = x, r = min(x + Sq, (long long)-x);
    else
      l = max(x - Sq, (long long)-x), r = x;
    l = lower_bound(p, p + n, make_pair(l, -INF)) - p;
    r = upper_bound(p, p + n, make_pair(r, INF)) - p;
    int Mx = max(L[l].first, R[r].first);
    int Mn = min(L[l].second, R[r].second);
    if (Mn >= INF) return true;
    T = Mx - Mn;
    T *= T;
    T = max(T, 1ll * Mn * Mn + 1ll * x * x);
    T = max(T, 1ll * Mx * Mx + 1ll * x * x);
    if (T <= val) return true;
  }
  return false;
}
int main() {
  ios_base ::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  cin >> n;
  for (int i = 0; i < n; ++i) cin >> p[i].first >> p[i].second;
  sort(p, p + n);
  L[0] = R[n] = {-INF, INF};
  for (int i = 0; i < n; ++i) {
    L[i + 1].first = max(L[i].first, p[i].second);
    L[i + 1].second = min(L[i].second, p[i].second);
  }
  for (int i = n - 1; ~i; --i) {
    R[i].first = max(R[i + 1].first, p[i].second);
    R[i].second = min(R[i + 1].second, p[i].second);
  }
  long long L = 0, R = 1e18 + 10;
  while (L != R) {
    long long mid = L + R >> 1;
    if (check(mid))
      R = mid;
    else
      L = mid + 1;
  }
  cout << L << '\n';
  return 0;
}
