#include <cmath>
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <set>
#include <map>
#include <list>
#include <time.h>
#include <math.h>
#include <random>
#include <deque>
#include <queue>
#include <cassert>
#include <unordered_map>
#include <unordered_set>
#include <iomanip>
#include <bitset>
#include <sstream>
using namespace std;
typedef long long ll;
mt19937 rnd(228);
struct pt
{
int x, y;
};
pt operator - (const pt &a, const pt &b)
{
return {a.x - b.x, a.y - b.y};
}
ll abs(const pt &p)
{
return p.x * (ll) p.x + p.y * (ll) p.y;
}
ll operator * (const pt &a, const pt &b)
{
return a.x * (ll) b.y - a.y * (ll) b.x;
}
bool cmp(const pt &a, const pt &b)
{
if (a.x != b.x)
{
return a.x < b.x;
}
else
{
return a.y < b.y;
}
}
bool cw(pt a, pt b, pt c)
{
return a.x * (ll) (b.y - c.y) + b.x * (ll) (c.y - a.y) + c.x * (ll) (a.y - b.y) < 0;
}
bool ccw(pt a, pt b, pt c)
{
return a.x * (ll) (b.y - c.y) + b.x * (ll) (c.y - a.y) + c.x * (ll) (a.y - b.y) > 0;
}
vector <pt> p, up, down;
vector <pt> mrg(const vector <pt> &a, const vector <pt> &b)
{
p.resize(a.size() + b.size());
merge(a.begin(), a.end(), b.begin(), b.end(), p.begin(), cmp);
return p;
}
vector <pt> hull(const vector <pt> &e)
{
if ((int) e.size() <= 3) return e;
up.clear();
down.clear();
p.clear();
pt p1 = e[0], p2 = e.back();
up.push_back(p1);
down.push_back(p1);
for (int i = 1; i < (int) e.size(); i++)
{
if (i == (int) e.size() - 1 || cw(p1, e[i], p2))
{
while ((int) up.size() >= 2 && !cw(up[(int) up.size() - 2], up[(int) up.size() - 1], e[i]))
{
up.pop_back();
}
up.push_back(e[i]);
}
if (i == (int) e.size() - 1 || ccw(p1, e[i], p2))
{
while ((int) down.size() >= 2 && !ccw(down[(int) down.size() - 2], down[(int) down.size() - 1], e[i]))
{
down.pop_back();
}
down.push_back(e[i]);
}
}
down.erase(down.begin());
down.pop_back();
return mrg(up, down);
}
const int N = 1e5;
pt a[N];
vector <pt> t[4 * N];
void build(int v, int l, int r)
{
if (r - l == 1)
{
t[v] = {a[l]};
}
else
{
int m = (l + r) / 2;
build(v * 2 + 1, l, m);
build(v * 2 + 2, m, r);
t[v] = mrg(t[v * 2 + 1], t[v * 2 + 2]);
t[v] = hull(t[v]);
}
}
vector <pt> get(int v, int l, int r, int tl, int tr)
{
if (tl >= r || tr <= l)
{
return {};
}
if (tl >= l && tr <= r)
{
return t[v];
}
else
{
int tm = (tl + tr) / 2;
return mrg(get(v * 2 + 1, l, r, tl, tm), get(v * 2 + 2, l, r, tm, tr));
}
}
int n;
vector <pt> get(int l, int r)
{
vector <pt> b = get(0, l, r + 1, 0, n);
b = hull(b);
return b;
}
int main()
{
#ifdef ONPC
freopen("a.in", "r", stdin);
#endif
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> a[i].x >> a[i].y;
}
build(0, 0, n);
int q;
cin >> q;
while (q--)
{
int l, r;
cin >> l >> r;
l--, r--;
auto b = get(l, r);
ll ans = 0;
for (int i = 0; i < (int) b.size(); i++)
{
for (int j = i + 1; j < (int) b.size(); j++)
{
ans = max(ans, abs(b[i] - b[j]));
}
}
cout << ans << '\n';
}
}
I2luY2x1ZGUgPGNtYXRoPgojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxhbGdvcml0aG0+CiNpbmNsdWRlIDxzdHJpbmc+CiNpbmNsdWRlIDxzZXQ+CiNpbmNsdWRlIDxtYXA+CiNpbmNsdWRlIDxsaXN0PgojaW5jbHVkZSA8dGltZS5oPgojaW5jbHVkZSA8bWF0aC5oPgojaW5jbHVkZSA8cmFuZG9tPgojaW5jbHVkZSA8ZGVxdWU+CiNpbmNsdWRlIDxxdWV1ZT4KI2luY2x1ZGUgPGNhc3NlcnQ+CiNpbmNsdWRlIDx1bm9yZGVyZWRfbWFwPgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KI2luY2x1ZGUgPGlvbWFuaXA+CiNpbmNsdWRlIDxiaXRzZXQ+CiNpbmNsdWRlIDxzc3RyZWFtPgogCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKdHlwZWRlZiBsb25nIGxvbmcgbGw7CiAKbXQxOTkzNyBybmQoMjI4KTsKIApzdHJ1Y3QgcHQKewogICAgaW50IHgsIHk7Cn07CiAKcHQgb3BlcmF0b3IgLSAoY29uc3QgcHQgJmEsIGNvbnN0IHB0ICZiKQp7CiAgICByZXR1cm4ge2EueCAtIGIueCwgYS55IC0gYi55fTsKfQogCmxsIGFicyhjb25zdCBwdCAmcCkKewogICAgcmV0dXJuIHAueCAqIChsbCkgcC54ICsgcC55ICogKGxsKSBwLnk7Cn0KIApsbCBvcGVyYXRvciAqIChjb25zdCBwdCAmYSwgY29uc3QgcHQgJmIpCnsKICAgIHJldHVybiBhLnggKiAobGwpIGIueSAtIGEueSAqIChsbCkgYi54Owp9CiAKYm9vbCBjbXAoY29uc3QgcHQgJmEsIGNvbnN0IHB0ICZiKQp7CiAgICBpZiAoYS54ICE9IGIueCkKICAgIHsKICAgICAgICByZXR1cm4gYS54IDwgYi54OwogICAgfQogICAgZWxzZQogICAgewogICAgICAgIHJldHVybiBhLnkgPCBiLnk7CiAgICB9Cn0KIApib29sIGN3KHB0IGEsIHB0IGIsIHB0IGMpCnsKCXJldHVybiBhLnggKiAobGwpIChiLnkgLSBjLnkpICsgYi54ICogKGxsKSAoYy55IC0gYS55KSArIGMueCAqIChsbCkgKGEueSAtIGIueSkgPCAwOwp9CiAKYm9vbCBjY3cocHQgYSwgcHQgYiwgcHQgYykKewoJcmV0dXJuIGEueCAqIChsbCkgKGIueSAtIGMueSkgKyBiLnggKiAobGwpIChjLnkgLSBhLnkpICsgYy54ICogKGxsKSAoYS55IC0gYi55KSA+IDA7Cn0KIAp2ZWN0b3IgPHB0PiBwLCB1cCwgZG93bjsKIAp2ZWN0b3IgPHB0PiBtcmcoY29uc3QgdmVjdG9yIDxwdD4gJmEsIGNvbnN0IHZlY3RvciA8cHQ+ICZiKQp7CiAgICBwLnJlc2l6ZShhLnNpemUoKSArIGIuc2l6ZSgpKTsKICAgIG1lcmdlKGEuYmVnaW4oKSwgYS5lbmQoKSwgYi5iZWdpbigpLCBiLmVuZCgpLCBwLmJlZ2luKCksIGNtcCk7CiAgICByZXR1cm4gcDsKfQogCnZlY3RvciA8cHQ+IGh1bGwoY29uc3QgdmVjdG9yIDxwdD4gJmUpCnsKICAgIGlmICgoaW50KSBlLnNpemUoKSA8PSAzKSByZXR1cm4gZTsKICAgIHVwLmNsZWFyKCk7CiAgICBkb3duLmNsZWFyKCk7CiAgICBwLmNsZWFyKCk7CiAgICBwdCBwMSA9IGVbMF0sIHAyID0gZS5iYWNrKCk7CiAgICB1cC5wdXNoX2JhY2socDEpOwogICAgZG93bi5wdXNoX2JhY2socDEpOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPCAoaW50KSBlLnNpemUoKTsgaSsrKQogICAgewogICAgICAgIGlmIChpID09IChpbnQpIGUuc2l6ZSgpIC0gMSB8fCBjdyhwMSwgZVtpXSwgcDIpKQogICAgICAgIHsKICAgICAgICAgICAgd2hpbGUgKChpbnQpIHVwLnNpemUoKSA+PSAyICYmICFjdyh1cFsoaW50KSB1cC5zaXplKCkgLSAyXSwgdXBbKGludCkgdXAuc2l6ZSgpIC0gMV0sIGVbaV0pKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB1cC5wb3BfYmFjaygpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHVwLnB1c2hfYmFjayhlW2ldKTsKICAgICAgICB9CiAgICAgICAgaWYgKGkgPT0gKGludCkgZS5zaXplKCkgLSAxIHx8IGNjdyhwMSwgZVtpXSwgcDIpKQogICAgICAgIHsKICAgICAgICAgICAgd2hpbGUgKChpbnQpIGRvd24uc2l6ZSgpID49IDIgJiYgIWNjdyhkb3duWyhpbnQpIGRvd24uc2l6ZSgpIC0gMl0sIGRvd25bKGludCkgZG93bi5zaXplKCkgLSAxXSwgZVtpXSkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGRvd24ucG9wX2JhY2soKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBkb3duLnB1c2hfYmFjayhlW2ldKTsKICAgICAgICB9CiAgICB9CiAgICBkb3duLmVyYXNlKGRvd24uYmVnaW4oKSk7CiAgICBkb3duLnBvcF9iYWNrKCk7CiAgICByZXR1cm4gbXJnKHVwLCBkb3duKTsKfQogCmNvbnN0IGludCBOID0gMWU1OwogCnB0IGFbTl07CnZlY3RvciA8cHQ+IHRbNCAqIE5dOwogCiAKdm9pZCBidWlsZChpbnQgdiwgaW50IGwsIGludCByKQp7CiAgICBpZiAociAtIGwgPT0gMSkKICAgIHsKICAgICAgICB0W3ZdID0ge2FbbF19OwogICAgfQogICAgZWxzZQogICAgewogICAgICAgIGludCBtID0gKGwgKyByKSAvIDI7CiAgICAgICAgYnVpbGQodiAqIDIgKyAxLCBsLCBtKTsKICAgICAgICBidWlsZCh2ICogMiArIDIsIG0sIHIpOwogICAgICAgIHRbdl0gPSBtcmcodFt2ICogMiArIDFdLCB0W3YgKiAyICsgMl0pOwogICAgICAgIHRbdl0gPSBodWxsKHRbdl0pOwogICAgfQp9CiAKdmVjdG9yIDxwdD4gZ2V0KGludCB2LCBpbnQgbCwgaW50IHIsIGludCB0bCwgaW50IHRyKQp7CiAgICBpZiAodGwgPj0gciB8fCB0ciA8PSBsKQogICAgewogICAgICAgIHJldHVybiB7fTsKICAgIH0KICAgIGlmICh0bCA+PSBsICYmIHRyIDw9IHIpCiAgICB7CiAgICAgICAgcmV0dXJuIHRbdl07CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgaW50IHRtID0gKHRsICsgdHIpIC8gMjsKICAgICAgICByZXR1cm4gbXJnKGdldCh2ICogMiArIDEsIGwsIHIsIHRsLCB0bSksIGdldCh2ICogMiArIDIsIGwsIHIsIHRtLCB0cikpOwogICAgfQp9CiAKaW50IG47CiAKdmVjdG9yIDxwdD4gZ2V0KGludCBsLCBpbnQgcikKewogICAgdmVjdG9yIDxwdD4gYiA9IGdldCgwLCBsLCByICsgMSwgMCwgbik7CiAgICBiID0gaHVsbChiKTsKICAgIHJldHVybiBiOwp9CiAKaW50IG1haW4oKQp7CiNpZmRlZiBPTlBDCiAgICBmcmVvcGVuKCJhLmluIiwgInIiLCBzdGRpbik7CiNlbmRpZgogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOwogICAgY2luID4+IG47CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykKICAgIHsKICAgICAgICBjaW4gPj4gYVtpXS54ID4+IGFbaV0ueTsKICAgIH0KICAgIGJ1aWxkKDAsIDAsIG4pOwogICAgaW50IHE7CiAgICBjaW4gPj4gcTsKICAgIHdoaWxlIChxLS0pCiAgICB7CiAgICAgICAgaW50IGwsIHI7CiAgICAgICAgY2luID4+IGwgPj4gcjsKICAgICAgICBsLS0sIHItLTsKICAgICAgICBhdXRvIGIgPSBnZXQobCwgcik7CiAgICAgICAgbGwgYW5zID0gMDsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IChpbnQpIGIuc2l6ZSgpOyBpKyspCiAgICAgICAgewogICAgICAgICAgICBmb3IgKGludCBqID0gaSArIDE7IGogPCAoaW50KSBiLnNpemUoKTsgaisrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBhbnMgPSBtYXgoYW5zLCBhYnMoYltpXSAtIGJbal0pKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBjb3V0IDw8IGFucyA8PCAnXG4nOwogICAgfQp9CiA=