#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
void DBG() { cerr << "]" << endl; }
template<class H, class... T> void DBG(H h, T... t) { cerr << to_string(h); if(sizeof...(t)) cerr << ", "; DBG(t...); }
#define dbg(...) cerr << "[" << #__VA_ARGS__ << "]: [", DBG(__VA_ARGS__)
const int N = 1000003;
const ll MOD = 1000000007;
ll r[N];
struct Tacka {
    ll x, y;
};
Tacka tacke[N];

int main() {
    ios::sync_with_stdio(false); cin.tie(0);
    int m; cin >> m;
    ll xmin = -1, ymin = -1, xmax = -1, ymax = -1;

    auto zbir = [&](ll xa, ll ya, int ind) {
        ll ans = 0;
        for (int i = 0; i <= ind; i++) {
            ll cena = abs(xa - tacke[i].x) * abs(ya - tacke[i].y) % MOD;
            ans = (ans + cena) % MOD;
        }
        return ans;
    };
    for (int i = 0; i < m; i++) {
        cin >> tacke[i].x >> tacke[i].y;
        if (xmin == -1) {
            xmin = xmax = tacke[i].x;
            ymin = ymax = tacke[i].y;
        } else {
            xmin = min(xmin, tacke[i].x);
            xmax = max(xmax, tacke[i].x);
            ymin = min(ymin, tacke[i].y);
            ymax = max(ymax, tacke[i].y);
        }
        ll ans = 0;
        ans = max(ans, zbir(xmin, ymin, i));
        ans = max(ans, zbir(xmax, ymin, i));
        ans = max(ans, zbir(xmin, ymax, i));
        ans = max(ans, zbir(xmax, ymax, i));
        //dbg(xmin, ymin, xmax, ymax, zbir(xmin, ymax, i));
        r[i] = ans;
    }
    for (int i = 0; i < m; i++) {
        cout << r[i] << "\n";
    }
}