const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

/**
 * 判断ip合法性
 */
function valid(ip) {
    // 分割成数组
    const arr = ip.split(".").filter((item) => item !== "");
    // 如果长度小于4,则不合法
    if (arr.length < 4) return false;
    // 如果数字为空或者不在0到255间,则不合法
    return arr.every((item) => +item >= 0 && +item <= 255);
}

function ipToNum(ip) {
    let sum = 0;
    const ipArr = ip.split(".").reverse();
    for (let i = 0; i < ipArr.length; i++) {
        sum += +ipArr[i] * 255 ** i;
    }
    return sum;
}
/**
 * ip分类统计
 */
function sumIp(ip) {
    const ipArr = ip.split(".");
    if (+ipArr[0] === 0 || +ipArr[0] === 127) return;
    // ip转换成数字
    const ipNum = ipToNum(ip);
    // ip分类统计
    if (ipToNum("1.0.0.0") <= ipNum && ipNum <= ipToNum("127.255.255.255")) {
        contArr[0]++;
    } else if (
        ipToNum("128.0.0.0") <= ipNum &&
        ipNum <= ipToNum("191.255.255.255")
    ) {
        contArr[1]++;
    } else if (
        ipToNum("192.0.0.0") <= ipNum &&
        ipNum <= ipToNum("223.255.255.255")
    ) {
        contArr[2]++;
    } else if (
        ipToNum("224.0.0.0") <= ipNum &&
        ipNum <= ipToNum("239.255.255.255")
    ) {
        contArr[3]++;
    } else {
        contArr[4]++;
    }
    // 私有地址统计
    if (
        (ipToNum("10.0.0.0") <= ipNum && ipNum <= ipToNum("10.255.255.255")) ||
        (ipToNum("172.16.0.0") <= ipNum &&
            ipNum <= ipToNum("172.31.255.255")) ||
        (ipToNum("192.168.0.0") <= ipNum && ipNum <= ipToNum("192.168.255.255"))
    ) {
        contArr[6]++;
    }
}

function ipToBety(ip) {
    let str = "";
    const ipArr = ip.split(".");
    for (let i = 0; i < ipArr.length; i++) {
        str += Number(ipArr[i]).toString(2).padStart(8, "0");
    }
    return str;
}
/**
 * 统计错误子网掩码
 */
function validErrZwym(zwym) {
    const zwymArr = zwym.split(".").filter((item) => item !== "");
    if (zwymArr.length < 4) return false;
    if (!zwymArr.every((item) => +item >= 0 && +item <= 255)) return false;
    const ipBety = ipToBety(zwym);
    if (/01/.test(ipBety) || !ipBety.includes("1") || !ipBety.includes("0"))
        return false;
    return true;
}
const contArr = [0, 0, 0, 0, 0, 0, 0];
void (async function () {
    // Write your code here
    while ((line = await readline())) {
        const arr = line.split("~");
        const ip = arr[0];
        const zwym = arr[1];
        if (!valid(ip) || !validErrZwym(zwym)) {
            const ipArr = ip.split(".");
            if (+ipArr[0] === 0 || +ipArr[0] === 127) continue;
            contArr[5]++;
            continue;
        }
        sumIp(ip);
    }
    console.log(contArr.join(" "));
})();