#include <iostream> 
#include <vector> 
using  namespace  std; 
 
int  main( )  { 
    int  N, M;  // N = jumlah pendonor, M = jumlah desa 
 
    cout  <<  "Masukkan jumlah pendonor DDS (1 - 1000): " ; 
    cin  >>  N; 
    cout  <<  "Masukkan jumlah desa (1 - 10): " ; 
    cin  >>  M; 
 
    // Membuat vektor 2D: M desa, masing-masing punya 4 kolom (golongan darah A, B, AB, O) 
    vector< vector< int >>  pendonor( M, vector< int > ( 4 , 0 ) ) ; 
 
    cout  <<  "Masukkan kode desa, golongan darah (1-4), dan volume darah (0-500 ml): "  <<  endl; 
 
    for  ( int  i =  0 ;  i <  N;  i++ )  { 
        int  kodeDesa, golonganDarah, volumeDarah; 
        cin  >>  kodeDesa >>  golonganDarah >>  volumeDarah; 
        pendonor[ kodeDesa -  1 ] [ golonganDarah -  1 ] ++ ;  // Tambahkan jumlah pendonor di desa dan golongan darah sesuai input 
    } 
 
    cout  <<  "\n Berikut banyaknya pendonor pada masing-masing desa: "  <<  endl; 
    for  ( int  i =  0 ;  i <  M;  i++ )  { 
        int  totalPendonor =  0 ; 
        for  ( int  j =  0 ;  j <  4 ;  j++ )  { 
            totalPendonor + =  pendonor[ i] [ j] ; 
        } 
        cout  <<  "Desa "  <<  i +  1  <<  ": "  <<  totalPendonor <<  " Pendonor"  <<  endl; 
    } 
 
    return  0 ; 
} 
 
 
				I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSB7CiAgICBpbnQgTiwgTTsgLy8gTiA9IGp1bWxhaCBwZW5kb25vciwgTSA9IGp1bWxhaCBkZXNhCgogICAgY291dCA8PCAiTWFzdWtrYW4ganVtbGFoIHBlbmRvbm9yIEREUyAoMSAtIDEwMDApOiAiOwogICAgY2luID4+IE47CiAgICBjb3V0IDw8ICJNYXN1a2thbiBqdW1sYWggZGVzYSAoMSAtIDEwKTogIjsKICAgIGNpbiA+PiBNOwoKICAgIC8vIE1lbWJ1YXQgdmVrdG9yIDJEOiBNIGRlc2EsIG1hc2luZy1tYXNpbmcgcHVueWEgNCBrb2xvbSAoZ29sb25nYW4gZGFyYWggQSwgQiwgQUIsIE8pCiAgICB2ZWN0b3I8dmVjdG9yPGludD4+IHBlbmRvbm9yKE0sIHZlY3RvcjxpbnQ+KDQsIDApKTsKCiAgICBjb3V0IDw8ICJNYXN1a2thbiBrb2RlIGRlc2EsIGdvbG9uZ2FuIGRhcmFoICgxLTQpLCBkYW4gdm9sdW1lIGRhcmFoICgwLTUwMCBtbCk6ICIgPDwgZW5kbDsKCiAgICBmb3IgKGludCBpID0gMDsgaSA8IE47IGkrKykgewogICAgICAgIGludCBrb2RlRGVzYSwgZ29sb25nYW5EYXJhaCwgdm9sdW1lRGFyYWg7CiAgICAgICAgY2luID4+IGtvZGVEZXNhID4+IGdvbG9uZ2FuRGFyYWggPj4gdm9sdW1lRGFyYWg7CiAgICAgICAgcGVuZG9ub3Jba29kZURlc2EgLSAxXVtnb2xvbmdhbkRhcmFoIC0gMV0rKzsgLy8gVGFtYmFoa2FuIGp1bWxhaCBwZW5kb25vciBkaSBkZXNhIGRhbiBnb2xvbmdhbiBkYXJhaCBzZXN1YWkgaW5wdXQKICAgIH0KCiAgICBjb3V0IDw8ICJcbkJlcmlrdXQgYmFueWFrbnlhIHBlbmRvbm9yIHBhZGEgbWFzaW5nLW1hc2luZyBkZXNhOiAiIDw8IGVuZGw7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IE07IGkrKykgewogICAgICAgIGludCB0b3RhbFBlbmRvbm9yID0gMDsKICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IDQ7IGorKykgewogICAgICAgICAgICB0b3RhbFBlbmRvbm9yICs9IHBlbmRvbm9yW2ldW2pdOwogICAgICAgIH0KICAgICAgICBjb3V0IDw8ICJEZXNhICIgPDwgaSArIDEgPDwgIjogIiA8PCB0b3RhbFBlbmRvbm9yIDw8ICIgUGVuZG9ub3IiIDw8IGVuZGw7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0K