#include <iostream>
#include<sstream>
#include<cmath>
#include<vector>
using namespace std;
bool trueIP(const string&IP)
{
istringstream ss(IP);
int num=0;string temp;
while(getline(ss,temp,'.'))
{
    if(++num>4||temp.empty()||stoi(temp)>255)
    return false;
}
return num==4;
}
bool truemask(const string&mask)
{
    istringstream ss(mask);
    unsigned num=0;string temp;
    while(getline(ss,temp,'.'))
    {
        num=(num<<8)+stoi(temp);
    }
    if(!num)
    return false;
    num=~num+1;
    if(num==1)return false;
    if((num&(num-1))==0)
    return true;
    return false;
}
bool isprivate(const string&IP)
{
istringstream ss(IP);
vector<int> num;string temp;
while(getline(ss,temp,'.'))
{num.emplace_back(stoi(temp));
}
if(num[0]==10)
return true;
if(num[0]==172&&(num[1]>=16&&num[1]<=31))
return true;
if(num[0]==192&&num[1]==168)
return true;
return false;
}
int main() {
    string line;
    int A=0,B=0,C=0,D=0,E=0,F=0,G=0;
    while (getline(cin,line)) { 
    istringstream ss(line);
    int ad;
    vector<string> sv;string temp;
    while(getline(ss,temp,'~'))
    {sv.emplace_back(temp);}
    ad=stoi(sv[0].substr(0,sv[0].find_first_of('.')));
    if(trueIP(sv[0])&&(ad==0||ad==127))
    {
        continue;
    }
    if(!trueIP(sv[1])||!truemask(sv[1]))
    F++;
    else
     {
        if(!trueIP(sv[0]))F++;
        else

        {if(isprivate(sv[0]))
        G++;
        
        if(ad>=1&&ad<=126)A++;
        else if(ad>=128&&ad<=191)B++;
        else if(ad>=192&&ad<=223)C++;
        else if(ad>=224&&ad<=239)D++;
        else if(ad>=240&&ad<=255)E++;}
     };
        

    }
    cout<<A<<" "<<B<<" "<<C<<" "<<D<<" "<<E<<" "<<F<<" "<<G;
}