#include using namespace std; using ll = long long; using ld = long double; using Pair = pair; using Tuple = tuple; using VI1 = vector; using VI2 = vector; using VL1 = vector; using VL2 = vector; using VD1 = vector; using VD2 = vector; using VB1 = vector; using VB2 = vector; using VP1 = vector; using VP2 = vector; using VT1 = vector; using VT2 = vector; using Queue = queue; using DQ = deque; using PQ = priority_queue, greater>; using Table = VI2; using Graph = VI2; auto solve() { int N; cin >> N; map mp; for (int i = 0; i < N; ++i) { string Si; int Ci; cin >> Si >> Ci; mp[Si] = Ci; } VI1 cnt(8, 0); for (auto &[Si, Ci] : mp) { ++cnt.at(Ci); } return cnt; } template void output_row(std::vector &row) { int N = row.size(); for (int i = 0; i < N; ++i) { if (i > 0) cout << ' '; cout << row.at(i); } cout << '\n'; } template void output_col(std::vector &col) { int N = col.size(); for (int i = 0; i < N; ++i) { cout << col.at(i) << '\n'; } } int main() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); auto result = solve(); output_col(result); }