#include <bits/stdc++.h> using namespace std; using ll = long long; using ld = long double; using Pair = pair<int, int>; using Tuple = tuple<int, int, int>; using VI1 = vector<int>; using VI2 = vector<VI1>; using VL1 = vector<ll>; using VL2 = vector<VL1>; using VD1 = vector<ld>; using VD2 = vector<VD1>; using VB1 = vector<bool>; using VB2 = vector<VB1>; using VP1 = vector<Pair>; using VP2 = vector<VP1>; using VT1 = vector<Tuple>; using VT2 = vector<VT1>; using Queue = queue<int>; using DQ = deque<int>; using PQ = priority_queue<int, vector<int>, greater<int>>; using Table = VI2; using Graph = VI2; auto solve() { int N; cin >> N; map<string, int> 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 <typename T> void output_row(std::vector<T> &row) { int N = row.size(); for (int i = 0; i < N; ++i) { if (i > 0) cout << ' '; cout << row.at(i); } cout << '\n'; } template <typename T> void output_col(std::vector<T> &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); }