# 识别有效的IP地址和掩码并进行分类统计
def value(S):
return int(S[0])*256**3 + int(S[1])*256**2 + int(S[2])*256 + int(S[3])
def bin64(S):
b = ''
for i in S:
b += bin(int(i))[2:].zfill(8)
return b
A1,A2 = value(['1','0','0','0']),value(['126','255','255','255'])
B1,B2 = value(['128','0','0','0']),value(['191','255','255','255'])
C1,C2 = value(['192','0','0','0']),value(['223','255','255','255'])
D1,D2 = value(['224','0','0','0']),value(['239','255','255','255'])
E1,E2 = value(['240','0','0','0']),value(['255','255','255','255'])
Sa1,Sa2 = value(['10','0','0','0']),value(['10','255','255','255'])
Sb1,Sb2 = value(['172','16','0','0']),value(['172','31','255','255'])
Sc1,Sc2 = value(['192','168','0','0']),value(['192','168','255','255'])
def isA(ip):
return A1<=value(ip)<=A2
def isB(ip):
return B1<=value(ip)<=B2
def isC(ip):
return C1<=value(ip)<=C2
def isD(ip):
return D1<=value(ip)<=D2
def isE(ip):
return E1<=value(ip)<=E2
def isS(ip):
return Sa1<=value(ip)<=Sa2 or Sb1<=value(ip)<=Sb2 or Sc1<=value(ip)<=Sc2
def isIp(ip):
if len(ip) != 4:
return False
for i in ip:
if not i.isnumeric() or int(i)<0 or int(i)>255:
return False
return True
def isMask(mask):
if len(mask) != 4:
return False
for i in mask:
if not i.isnumeric() or int(i)<0 or int(i)>255:
return False
t = list(map(int,list(bin64(mask))))
a = []
for i in range(len(t)-1):
a.append(t[i]-t[i+1])
if a.count(1) == 1 and a.count(0) == 30:
return True
else:
return False
out = [0]*7
while 1:
try:
pass
ip,mask = input().strip().split('~')
ip = ip.split('.')
mask = mask.split('.')
#print(ip)
#print(mask)
if isIp(ip) and isMask(mask):
if isA(ip):
out[0] += 1
if isB(ip):
out[1] += 1
if isC(ip):
out[2] += 1
if isD(ip):
out[3] += 1
if isE(ip):
out[4] += 1
if isS(ip):
out[6] += 1
else:
out[5] += 1
#print('out=',out)
except:
break
#print('out=',out)
print(' '.join(map(str,out)))