#include <iostream>
#include <list>
struct Ant
{
int x;
int y;
int c;
};
struct Area
{
int ax, ay;
int bx;
int cy;
};
bool belongs(const Area & area, const Ant & ant);
int main()
{
Ant ant;
Area area;
std::list<Ant> blacks;
unsigned long int d, n, count;
std::cin >> d;
std::cin >> n;
for (int i = 0; i < d; ++i)
{
area.ax = -1;
blacks.clear();
count = 0;
for (int j = 0; j < n; ++j)
{
std::cin >> ant.x;
std::cin >> ant.y;
std::cin >> ant.c;
if (ant.c == 0)
blacks.push_back(ant);
else if(!belongs(area, ant))
{
++count;
if (area.ax == -1)
{
area.ax = ant.x;
area.bx = ant.x;
area.ay = ant.y;
area.cy = ant.y;
continue;
}
if (ant.x < area.ax)
area.ax = ant.x;
else if (ant.x > area.bx)
area.bx = ant.x;
if (ant.y < area.ay)
area.ay = ant.y;
else if (ant.y > area.cy)
area.cy = ant.y;
}
else
++count;
}
for (auto &x : blacks)
if (belongs(area, x))
++count;
std::cout << count << std::endl;
}
}
bool belongs(const Area & area, const Ant & ant)
{
if (ant.x >= area.ax && ant.y >= area.ay && ant.x <= area.bx && ant.y <= area.cy)
return true;
else
return false;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bGlzdD4KCiAgICAgICAgc3RydWN0IEFudAogICAgICAgIHsKICAgICAgICAgICAgICAgIGludCB4OwogICAgICAgICAgICAgICAgaW50IHk7CiAgICAgICAgICAgICAgICBpbnQgYzsKICAgICAgICB9OwoKICAgICAgICBzdHJ1Y3QgQXJlYQogICAgICAgIHsKICAgICAgICAgICAgICAgIGludCBheCwgYXk7CiAgICAgICAgICAgICAgICBpbnQgYng7CiAgICAgICAgICAgICAgICBpbnQgY3k7CiAgICAgICAgfTsgCgogICAgICAgIGJvb2wgYmVsb25ncyhjb25zdCBBcmVhICYgYXJlYSwgY29uc3QgQW50ICYgYW50KTsKCiAgICAgICAgaW50IG1haW4oKQogICAgICAgIHsKICAgICAgICAgICAgICAgIEFudCBhbnQ7CiAgICAgICAgICAgICAgICBBcmVhIGFyZWE7CiAgICAgICAgICAgICAgICBzdGQ6Omxpc3Q8QW50PiBibGFja3M7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGludCBkLCBuLCBjb3VudDsKICAgICAgICAgICAgICAgIHN0ZDo6Y2luID4+IGQ7CiAgICAgICAgICAgICAgICBzdGQ6OmNpbiA+PiBuOwogICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBkOyArK2kpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGFyZWEuYXggPSAtMTsKICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tzLmNsZWFyKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBuOyArK2opCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmNpbiA+PiBhbnQueDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmNpbiA+PiBhbnQueTsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpjaW4gPj4gYW50LmM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFudC5jID09IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja3MucHVzaF9iYWNrKGFudCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZighYmVsb25ncyhhcmVhLCBhbnQpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrY291bnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXJlYS5heCA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlYS5heCA9IGFudC54OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmVhLmJ4ID0gYW50Lng7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmVhLmF5ID0gYW50Lnk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZWEuY3kgPSBhbnQueTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYW50LnggPCBhcmVhLmF4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmVhLmF4ID0gYW50Lng7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChhbnQueCA+IGFyZWEuYngpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZWEuYnggPSBhbnQueDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhbnQueSA8IGFyZWEuYXkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZWEuYXkgPSBhbnQueTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGFudC55ID4gYXJlYS5jeSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlYS5jeSA9IGFudC55OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArK2NvdW50OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoYXV0byAmeCA6IGJsYWNrcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmVsb25ncyhhcmVhLCB4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrY291bnQ7CgkJCXN0ZDo6Y291dCA8PCBjb3VudCA8PCBzdGQ6OmVuZGw7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBib29sIGJlbG9uZ3MoY29uc3QgQXJlYSAmIGFyZWEsIGNvbnN0IEFudCAmIGFudCkKICAgICAgICB7CiAgICAgICAgICAgICAgICBpZiAoYW50LnggPj0gYXJlYS5heCAmJiBhbnQueSA+PSBhcmVhLmF5ICYmIGFudC54IDw9IGFyZWEuYnggJiYgYW50LnkgPD0gYXJlYS5jeSkgCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQo=