#include #include using namespace std; int main() { int n = 0; while (cin >> n) { map, int> mpi; int maxX = 0; int maxY = 0; for (int i=0; i> x >> y; mpi[pair(x, y)]=0; if (x > maxX) maxX = x; if (y > maxY) maxY = y; } while (true) { int max = 0; for (auto& pi : mpi) { // cout << "* pi(" << pi.first.first << "," << pi.first.second << ")\n"; pair p[4]; p[0] = pair(pi.first.first-1,pi.first.second); p[1] = pair(pi.first.first+1,pi.first.second); p[2] = pair(pi.first.first,pi.first.second-1); p[3] = pair(pi.first.first,pi.first.second+1); for (int q = 0; q < 4; ++q) { // cout << "p["<< p[q].first << "," << p[q].second << "]\n"; if (mpi.count(p[q])) { // cout << "FUCK U\n"; pi.second = pi.second + 1; if (pi.second > max) max = pi.second; } } } if (!max) break; map, int>::iterator it = mpi.begin(); for (; it != mpi.end();) { // cout << "(" << it->first.first << it->first.second << ")" << it->second; if (max && it->second == max) { it = mpi.erase(it); // cout << "x\n"; } else { it->second = 0; ++it; // cout << "*\n"; } } } if (!mpi.size()) { cout << ((maxX+1)*(maxY+1))/2 << "\n"; } else { cout << mpi.size() << "\n"; } } return 0; }