#include <iostream>
#include <map> // Untuk menyimpan jumlah donor per desa
 
int main() {
    int n; // Jumlah total data donor yang akan dibaca
 
    // 1. Baca angka pertama, yaitu jumlah total donor (8)
    std::cin >> n;
 
    // 2. Gunakan std::map untuk menghitung donor.
    // Kunci (key) adalah ID desa, Nilai (value) adalah jumlahnya.
    std::map<int, int> jumlah_donor;
 
    // 3. Ulangi sebanyak n kali (8 kali)
    for (int i = 0; i < n; ++i) {
        int id_desa;
        // Baca angka pertama dari setiap data donor, ini adalah ID desa
        std::cin >> id_desa;
 
        // Berdasarkan analisis input Anda, data pertama memiliki 3 angka ekstra,
        // dan 7 data sisanya masing-masing memiliki 2 angka ekstra.
        // Kita perlu membaca angka-angka ini agar input stream berpindah
        // ke ID desa berikutnya.
 
        int dummy1, dummy2, dummy3;
 
        if (i == 0) {
            // Ini adalah data donor pertama (3, 3, 1, 150)
            // Kita sudah baca '3' (id_desa), jadi kita baca 3 angka sisanya.
            std::cin >> dummy1 >> dummy2 >> dummy3; // Membaca 3, 1, 150
        } else {
            // Ini adalah data donor ke-2 hingga ke-8 (misal: 1, 2, 250)
            // Kita sudah baca '1' (id_desa), jadi kita baca 2 angka sisanya.
            std::cin >> dummy1 >> dummy2; // Membaca 2, 250 (lalu 1, 300, dst.)
        }
 
        // 4. Tambahkan hitungan untuk desa yang sesuai
        jumlah_donor[id_desa]++;
    }
 
    // 5. Cetak hasilnya sesuai format yang diminta
    std::cout << "desa 1:" << jumlah_donor[1] 
              << " ,desa 2:" << jumlah_donor[2] 
              << ", desa 3:" << jumlah_donor[3] 
              << std::endl;
 
    return 0;
}
				I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWFwPiAvLyBVbnR1ayBtZW55aW1wYW4ganVtbGFoIGRvbm9yIHBlciBkZXNhCgppbnQgbWFpbigpIHsKICAgIGludCBuOyAvLyBKdW1sYWggdG90YWwgZGF0YSBkb25vciB5YW5nIGFrYW4gZGliYWNhCiAgICAKICAgIC8vIDEuIEJhY2EgYW5na2EgcGVydGFtYSwgeWFpdHUganVtbGFoIHRvdGFsIGRvbm9yICg4KQogICAgc3RkOjpjaW4gPj4gbjsKCiAgICAvLyAyLiBHdW5ha2FuIHN0ZDo6bWFwIHVudHVrIG1lbmdoaXR1bmcgZG9ub3IuCiAgICAvLyBLdW5jaSAoa2V5KSBhZGFsYWggSUQgZGVzYSwgTmlsYWkgKHZhbHVlKSBhZGFsYWgganVtbGFobnlhLgogICAgc3RkOjptYXA8aW50LCBpbnQ+IGp1bWxhaF9kb25vcjsKCiAgICAvLyAzLiBVbGFuZ2kgc2ViYW55YWsgbiBrYWxpICg4IGthbGkpCiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkgewogICAgICAgIGludCBpZF9kZXNhOwogICAgICAgIC8vIEJhY2EgYW5na2EgcGVydGFtYSBkYXJpIHNldGlhcCBkYXRhIGRvbm9yLCBpbmkgYWRhbGFoIElEIGRlc2EKICAgICAgICBzdGQ6OmNpbiA+PiBpZF9kZXNhOwoKICAgICAgICAvLyBCZXJkYXNhcmthbiBhbmFsaXNpcyBpbnB1dCBBbmRhLCBkYXRhIHBlcnRhbWEgbWVtaWxpa2kgMyBhbmdrYSBla3N0cmEsCiAgICAgICAgLy8gZGFuIDcgZGF0YSBzaXNhbnlhIG1hc2luZy1tYXNpbmcgbWVtaWxpa2kgMiBhbmdrYSBla3N0cmEuCiAgICAgICAgLy8gS2l0YSBwZXJsdSBtZW1iYWNhIGFuZ2thLWFuZ2thIGluaSBhZ2FyIGlucHV0IHN0cmVhbSBiZXJwaW5kYWgKICAgICAgICAvLyBrZSBJRCBkZXNhIGJlcmlrdXRueWEuCiAgICAgICAgCiAgICAgICAgaW50IGR1bW15MSwgZHVtbXkyLCBkdW1teTM7CgogICAgICAgIGlmIChpID09IDApIHsKICAgICAgICAgICAgLy8gSW5pIGFkYWxhaCBkYXRhIGRvbm9yIHBlcnRhbWEgKDMsIDMsIDEsIDE1MCkKICAgICAgICAgICAgLy8gS2l0YSBzdWRhaCBiYWNhICczJyAoaWRfZGVzYSksIGphZGkga2l0YSBiYWNhIDMgYW5na2Egc2lzYW55YS4KICAgICAgICAgICAgc3RkOjpjaW4gPj4gZHVtbXkxID4+IGR1bW15MiA+PiBkdW1teTM7IC8vIE1lbWJhY2EgMywgMSwgMTUwCiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gSW5pIGFkYWxhaCBkYXRhIGRvbm9yIGtlLTIgaGluZ2dhIGtlLTggKG1pc2FsOiAxLCAyLCAyNTApCiAgICAgICAgICAgIC8vIEtpdGEgc3VkYWggYmFjYSAnMScgKGlkX2Rlc2EpLCBqYWRpIGtpdGEgYmFjYSAyIGFuZ2thIHNpc2FueWEuCiAgICAgICAgICAgIHN0ZDo6Y2luID4+IGR1bW15MSA+PiBkdW1teTI7IC8vIE1lbWJhY2EgMiwgMjUwIChsYWx1IDEsIDMwMCwgZHN0LikKICAgICAgICB9CgogICAgICAgIC8vIDQuIFRhbWJhaGthbiBoaXR1bmdhbiB1bnR1ayBkZXNhIHlhbmcgc2VzdWFpCiAgICAgICAganVtbGFoX2Rvbm9yW2lkX2Rlc2FdKys7CiAgICB9CgogICAgLy8gNS4gQ2V0YWsgaGFzaWxueWEgc2VzdWFpIGZvcm1hdCB5YW5nIGRpbWludGEKICAgIHN0ZDo6Y291dCA8PCAiZGVzYSAxOiIgPDwganVtbGFoX2Rvbm9yWzFdIAogICAgICAgICAgICAgIDw8ICIgLGRlc2EgMjoiIDw8IGp1bWxhaF9kb25vclsyXSAKICAgICAgICAgICAgICA8PCAiLCBkZXNhIDM6IiA8PCBqdW1sYWhfZG9ub3JbM10gCiAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOwoKICAgIHJldHVybiAwOwp9