// 分成ip和掩码
// 判断ip时候合法 掩码是否合法
// 判读私有ip
// 判断A B C D E


// 注意边界条件 0 127

const rl = require("readline").createInterface({
    input: process.stdin,
    output: process.stdout,
});
var iter = rl[Symbol.asyncIterator]();

const readline = async () => (await iter.next()).value;

const ipValidTest = (ip) => {
    return /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(ip);
};

const isPrivateIp = (ip) => {
    const arr = ip.split(".").map((item) => Number(item));
    const first = arr[0];
    const second = arr[1];

    if (
        first == 10 ||
        (first == 172 && second <= 31 && second >= 16) ||
        (first == 192 && second == 168)
    ) {
        return true;
    }
    return false;
};

const isValidMask = (ip) => {
    let isValid = true;
    let str = "";
    const arr = ip.split(".").map((item) => Number(item));
    arr.forEach((item) => {
        // 转成二进制形式,255对应的数字有8位,保证8位
        str += item.toString(2).padStart(8,0);
    });
    if (str.indexOf("01") !== -1) {
        isValid = false;
    } else if (str.indexOf("0") == -1 || str.indexOf("1") == -1) {
        isValid = false;
    }
    return isValid;
};

void (async function () {
    const targetObj = {
        ipA: 0,
        ipB: 0,
        ipC: 0,
        ipD: 0,
        ipE: 0,
        ipMaskErr: 0,
        ipPrivate: 0,
    };
    while ((line = await readline())) {
        const [ip, mask] = line.split("~");
        const ipArr = ip.split('.')
        // 考虑边界条件 0 127忽略不计
        if(ipArr[0] == '0' || ipArr[0] == '127'){

        }else if (!ipValidTest(ip) || !isValidMask(mask)) {
            targetObj.ipMaskErr++;
        } else {
            if (isPrivateIp(ip)) {
                targetObj.ipPrivate++;
            }
            const leftArr = ip.split(".").map((item) => Number(item));
            const first = leftArr[0];
            if (first >= 1 && first <= 126) {
                targetObj.ipA++;
            } else if (first >= 28 && first <= 191) {
                targetObj.ipB++;
            } else if (first >= 192 && first <= 223) {
                targetObj.ipC++;
            } else if (first >= 224 && first <= 239) {
                targetObj.ipD++;
            } else if (first >= 240 && first <= 255) {
                targetObj.ipE++;
            }
        }
    }
    console.log(
        targetObj.ipA +
            " " +
            targetObj.ipB +
            " " +
            targetObj.ipC +
            " " +
            targetObj.ipD +
            " " +
            targetObj.ipE +
            " " +
            targetObj.ipMaskErr +
            " " +
            targetObj.ipPrivate +
            " "
    );
})();