#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 5;
pair<int, int> coord[N];
int premin[N], premax[N], sufmin[N], sufmax[N];
int n;
long long pow(int a) { return a * (long long)a; }
bool check(long long m) {
  int k = 1;
  for (int i = 0; i < n; i++) {
    while (k < n && abs(coord[k].first) <= abs(coord[i].first) &&
           pow(coord[k].first - coord[i].first) <= m)
      k++;
    while (k > i && abs(coord[k - 1].first) > abs(coord[i].first)) k--;
    int MIN = INT_MAX;
    int MAX = INT_MIN;
    if (i > 0) {
      MIN = premin[i - 1];
      MAX = premax[i - 1];
    }
    if (k < n) {
      MIN = min(MIN, sufmin[k]);
      MAX = max(MAX, sufmax[k]);
    }
    if (MIN > MAX || ((max(pow(coord[i].first), pow(coord[k - 1].first)) +
                           max(pow(MIN), pow(MAX)) <=
                       m) &&
                      pow(MAX - MIN) <= m))
      return true;
  }
  k = 0;
  for (int i = n - 1; i >= 0; i--) {
    while (k < i && (abs(coord[i].first) < abs(coord[k].first) ||
                     pow(coord[k].first - coord[i].first) > m))
      k++;
    while (k > 0 && (abs(coord[i].first) >= abs(coord[k - 1].first) &&
                     pow(coord[k - 1].first - coord[i].first) <= m))
      k--;
    int MIN = INT_MAX;
    int MAX = INT_MIN;
    if (k > 0) {
      MIN = premin[k - 1];
      MAX = premax[k - 1];
    }
    if (i < n - 1) {
      MIN = min(MIN, sufmin[i + 1]);
      MAX = max(MAX, sufmax[i + 1]);
    }
    if (MIN > MAX || ((max(pow(coord[i].first), pow(coord[k].first)) +
                           max(pow(MIN), pow(MAX)) <=
                       m) &&
                      pow(MAX - MIN) <= m))
      return true;
  }
  return false;
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) scanf("%d%d", &coord[i].first, &coord[i].second);
  sort(coord, coord + n);
  premin[0] = coord[0].second;
  premax[0] = coord[0].second;
  for (int i = 1; i < n; i++) {
    premin[i] = min(premin[i - 1], coord[i].second);
    premax[i] = max(premax[i - 1], coord[i].second);
  }
  sufmin[n - 1] = coord[n - 1].second;
  sufmax[n - 1] = coord[n - 1].second;
  for (int i = n - 2; i >= 0; i--) {
    sufmin[i] = min(sufmin[i + 1], coord[i].second);
    sufmax[i] = max(sufmax[i + 1], coord[i].second);
  }
  long long p = 0, k = pow(premax[n - 1] - premin[n - 1]);
  while (p < k) {
    long long s = (p + k) / 2;
    if (check(s))
      k = s;
    else
      p = s + 1;
  }
  printf("%lld\n", p);
}
