#include <bits/stdc++.h>
using namespace std;
const int inf = 200000000;
struct Point {
  int x, y;
  Point(int _x, int _y) {
    x = _x;
    y = _y;
  }
};
bool operator<(const Point a, const Point b) { return a.x < b.x; }
long long solve(vector<Point> v) {
  int n = (int)v.size();
  vector<int> MINI(n + 1);
  vector<int> MAXI(n + 1);
  MINI[n] = inf;
  MAXI[n] = -inf;
  for (int i = n - 1; i >= 0; i--) {
    MINI[i] = min(v[i].y, MINI[i + 1]);
    MAXI[i] = max(v[i].y, MAXI[i + 1]);
  }
  long long lo = 0, hi = 1LL * inf * inf, mi;
  int mini2, maxi2;
  while (lo <= hi) {
    mi = (lo + hi) / 2;
    bool ok = 0;
    int mini = inf, maxi = -inf;
    for (int i = 0, j = -1; i < n; i++) {
      ok = 1;
      while (j + 1 <= i) {
        if (1LL * (v[j + 1].x - v[i].x) * (v[j + 1].x - v[i].x) > mi) {
          mini = min(mini, v[j + 1].y);
          maxi = max(maxi, v[j + 1].y);
          j++;
        } else {
          break;
        }
      }
      mini2 = min(mini, MINI[i + 1]), maxi2 = max(maxi, MAXI[i + 1]);
      if (maxi2 < mini2) {
        ok = 1;
      } else {
        if (1LL * (maxi2 - mini2) * (maxi2 - mini2) > mi) ok = 0;
        if (1LL * mini2 * mini2 + 1LL * v[i].x * v[i].x > mi) {
          ok = 0;
        }
        if (1LL * maxi2 * maxi2 + 1LL * v[i].x * v[i].x > mi) {
          ok = 0;
        }
        if (1LL * mini2 * mini2 + 1LL * v[j + 1].x * v[j + 1].x > mi) {
          ok = 0;
        }
        if (1LL * maxi2 * maxi2 + 1LL * v[j + 1].x * v[j + 1].x > mi) {
          ok = 0;
        }
      }
      if (!ok) {
      } else {
        ok = 1;
        break;
      }
    }
    if (ok)
      hi = mi - 1;
    else
      lo = mi + 1;
  }
  return lo;
}
int main() {
  int n;
  vector<Point> v;
  cin >> n;
  for (int i = 0; i < n; i++) {
    int x, y;
    cin >> x >> y;
    v.push_back(Point(x, y));
  }
  sort(v.begin(), v.end());
  long long ans = solve(v);
  ans = min(1LL * (v[0].x - v[n - 1].x) * (v[0].x - v[n - 1].x), ans);
  for (int i = 0; i < n; i++) {
    swap(v[i].x, v[i].y);
  }
  sort(v.begin(), v.end());
  ans = min(1LL * (v[0].x - v[n - 1].x) * (v[0].x - v[n - 1].x), ans);
  ans = min(ans, solve(v));
  cout << ans << endl;
}
