#include <iostream>
#include <vector>
#include <math.h>
using namespace std;

struct Tacka{
int x,y;
};

int main()
{
    int m;
    cin>>m;
    vector<Tacka> tacke;
    vector<int> x,y;
    int x_in, y_in, x_min = 100001, x_max = -100001, y_min = 100001, y_max = -100001;
    bool postoji;
    Tacka t;
    long long int max_, zbir;
    vector<long long int> r;
    for(int i=0;i<m;i++){
        cin>>x_in>>y_in;
        max_ = 0;
        postoji = false;
        for(int j=0;j<x.size();j++){
            if(x[j] == x_in){
                postoji = true;
                break;
            }
        }
        if(!postoji){
            x.push_back(x_in);
            if(x_in>x_max)x_max = x_in;
            if(x_in<x_min)x_min = x_in;
        }
        postoji = false;
        for(int j=0;j<y.size();j++){
            if(y[j] == y_in){
                postoji = true;
                break;
            }
        }
        if(!postoji){
            y.push_back(y_in);
            if(y_in>y_max)y_max = y_in;
            if(y_in<y_min)y_min = y_in;
        }
        t.x = x_in;
        t.y = y_in;
        tacke.push_back(t);
        for(int a=0;a<x.size();a++){
            for(int b=y_min;b<=y_max;b++){
                zbir = 0;
                for(int j=0;j<tacke.size();j++){
                    zbir+=abs(tacke[j].x - x[a]) * abs(tacke[j].y - y[b]);
                    zbir%=1000000007;
                }
                if(zbir>max_)max_ = zbir;
            }
        }
        for(int a=x_min;a<=x_max;a++){
            for(int b=0;b<y.size();b++){
                zbir = 0;
                for(int j=0;j<tacke.size();j++){
                    zbir+=abs(tacke[j].x - x[a]) * abs(tacke[j].y - y[b]);
                    zbir%=1000000007;
                }
                if(zbir>max_)max_ = zbir;
            }
        }
        r.push_back(max_);
    }
    for(int i=0;i<m;i++){
        cout<<r[i]<<endl;
    }
    return 0;
}