#include <bits/stdc++.h>
using namespace std;
long long pf(int v) { return (long long)1 * v * v; }
struct sd {
  int a, b;
  bool operator<(const sd& w) const { return a < w.a; }
} x[100005];
long long maxx(long long a, long long b) { return a > b ? a : b; }
long long minx(long long a, long long b) { return a < b ? a : b; }
int n, fr[2][100005], ba[2][100005];
long long ans = 1e18;
bool jud(long long v) {
  int mid = sqrt(v);
  for (int i = 1; i <= n; i++) {
    if (x[i].a > 0) break;
    int l = 1, r = n, R = minx(mid + x[i].a, -x[i].a);
    while (l < r) {
      int mid = ((l + r) >> 1) + 1;
      if (x[mid].a <= R)
        l = mid;
      else
        r = mid - 1;
    }
    if (i == 1 && l == n) return 1;
    int ymin = minx(fr[0][i], ba[0][l]), ymax = maxx(fr[1][i], ba[1][l]);
    if (maxx(maxx(pf(ymax), pf(ymin)) + pf(x[i].a), pf(ymax - ymin)) <= v)
      return 1;
  }
  return 0;
}
void work() {
  sort(x + 1, x + 1 + n);
  fr[0][1] = 1e9;
  fr[1][1] = -1e9;
  ba[0][n] = 1e9;
  ba[1][n] = -1e9;
  for (int i = 2; i <= n; i++)
    fr[0][i] = minx(fr[0][i - 1], x[i - 1].b),
    fr[1][i] = maxx(fr[1][i - 1], x[i - 1].b);
  for (int i = n - 1; i >= 1; i--)
    ba[0][i] = minx(ba[0][i + 1], x[i + 1].b),
    ba[1][i] = maxx(ba[1][i + 1], x[i + 1].b);
  long long l = 0, r = 1e18;
  while (l < r) {
    long long mid = (l + r) / 2;
    if (jud(mid))
      r = mid;
    else
      l = mid + 1;
  }
  ans = minx(ans, l);
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%d%d", &x[i].a, &x[i].b);
  work();
  for (int i = 1; i <= n; i++) x[i].a *= -1;
  work();
  int ymax = -1e9, ymin = 1e9;
  for (int i = 1; i <= n; i++)
    ymax = maxx(ymax, x[i].b), ymin = minx(ymin, x[i].b);
  ans = minx(ans, pf(ymax - ymin));
  cout << ans << endl;
  return 0;
}
