RT
#include <bits/stdc++.h>
using namespace std;
const int dx[] = {-1, 1, 0, 0};
const int dy[] = {0, 0, -1, 1};
int n, m, vis[505][505];
char mat[505][505];
pair<int, int> fa[505][505];
pair<int, int> find(int x, int y) {
if (fa[x][y] == make_pair(x, y)) return make_pair(x, y);
return fa[x][y] = find(fa[x][y].first, fa[x][y].second);
}
void merge(int x, int y, int X, int Y) {
pair<int, int> p = find(x, y), p2 = find(X, Y);
if (p != p2) fa[p.first][p.second] = make_pair(p2.first, p2.second);
}
int main() {
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
memset(mat, -1, sizeof(mat));
cin >> n >> m;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
fa[i][j] = make_pair(i, j);
while (m--) {
int c, x, y;
cin >> c >> x >> y;
mat[x][y] = c;
for (int i = 0; i < 4; i++) {
int nx = x + dx[i];
int ny = y + dy[i];
if (1 <= nx && nx <= n && 1 <= ny && ny <= n && mat[x][y] == mat[nx][ny]) merge(x, y, nx, ny);
}
int ans = 0;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
if (find(i, j) == make_pair(i, j) && mat[i][j] != -1)
ans++;
cout << ans << endl;
}
return 0;
}