import base64

exec(base64.b64decode(b'aW1wb3J0IHN1YnByb2Nlc3MKaW1wb3J0IHN5cwoKY29kZSA9IHIiIiIjaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8Yml0c2V0PgojaW5jbHVkZSA8Y2Fzc2VydD4KI2luY2x1ZGUgPGNjdHlwZT4KI2luY2x1ZGUgPGNocm9ubz4KI2luY2x1ZGUgPGNtYXRoPgojaW5jbHVkZSA8Y29tcGxleD4KI2luY2x1ZGUgPGNzdHJpbmc+CiNpbmNsdWRlIDxkZXF1ZT4KI2luY2x1ZGUgPGlvbWFuaXA+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPG1hcD4KI2luY2x1ZGUgPG51bWVyaWM+CiNpbmNsdWRlIDxxdWV1ZT4KI2luY2x1ZGUgPHJhbmRvbT4KI2luY2x1ZGUgPHNldD4KI2luY2x1ZGUgPHN0YWNrPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dHVwbGU+CiNpbmNsdWRlIDx1dGlsaXR5PgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnVzaW5nIGludDY0ID0gbG9uZyBsb25nOwoKI2RlZmluZSBhbGwoXykgYmVnaW4oXyksIGVuZChfKQojZGVmaW5lIHJhbGwoXykgcmJlZ2luKF8pLCByZW5kKF8pCgp0ZW1wbGF0ZSA8Y2xhc3MgVD4KaW5saW5lIHZvaWQgZXJhcXVlKHN0ZDo6dmVjdG9yPFQ+JiB2ZWMpIHsKICB2ZWMuZXJhc2Uoc3RkOjp1bmlxdWUodmVjLmJlZ2luKCksIHZlYy5lbmQoKSksIHZlYy5lbmQoKSk7CiAgcmV0dXJuOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgVD4KaW5saW5lIGludCBsb3dlcl9wb3NpdGlvbihjb25zdCBzdGQ6OnZlY3RvcjxUPiYgdmVjLCBUIHZhbCkgewogIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHN0ZDo6ZGlzdGFuY2UoCiAgICAgIHZlYy5iZWdpbigpLCBzdGQ6Omxvd2VyX2JvdW5kKHZlYy5iZWdpbigpLCB2ZWMuZW5kKCksIHZhbCkpKTsKfQoKdGVtcGxhdGUgPGNsYXNzIFQ+CmlubGluZSBpbnQgdXBwZXJfcG9zaXRpb24oY29uc3Qgc3RkOjp2ZWN0b3I8VD4mIHZlYywgVCB2YWwpIHsKICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihzdGQ6OmRpc3RhbmNlKAogICAgICB2ZWMuYmVnaW4oKSwgc3RkOjp1cHBlcl9ib3VuZCh2ZWMuYmVnaW4oKSwgdmVjLmVuZCgpLCB2YWwpKSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBUPgppbmxpbmUgc3RkOjpzdHJpbmcgdG9fYmluYXJ5KFQgbikgewogIGFzc2VydChuID4gMCk7CiAgc3RkOjpzdHJpbmcgcmV0ID0gIiI7CiAgd2hpbGUgKG4pIHJldCArPSAobiAmIDEpID8gJzEnIDogJzAnLCBuID4+PSAxOwogIHN0ZDo6cmV2ZXJzZShyZXQuYmVnaW4oKSwgcmV0LmVuZCgpKTsKICByZXR1cm4gcmV0Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgVD4KaW5saW5lIHZvaWQgcHJpbnRsbihUIHZhbCkgewogIHN0ZDo6Y291dCA8PCB2YWwgPDwgJ1xuJzsKfQoKdGVtcGxhdGUgPGNsYXNzIFQ+CnVzaW5nIGJpbmFyeV9oZWFwID0gc3RkOjpwcmlvcml0eV9xdWV1ZTxULCBzdGQ6OnZlY3RvcjxUPiwgc3RkOjpncmVhdGVyPFQ+PjsKCnRlbXBsYXRlIDxjbGFzcyBUPgpzdGQ6OmlzdHJlYW0mIG9wZXJhdG9yPj4oc3RkOjppc3RyZWFtJiBpcywgc3RkOjp2ZWN0b3I8VD4mIHZlYykgewogIGZvciAoVCYgZSA6IHZlYykgaXMgPj4gZTsKICByZXR1cm4gaXM7Cn0KCnRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPgpzdGQ6OmlzdHJlYW0mIG9wZXJhdG9yPj4oc3RkOjppc3RyZWFtJiBpcywgc3RkOjpwYWlyPFQsIFU+JiBwKSB7CiAgcmV0dXJuIGlzID4+IHAuZmlyc3QgPj4gcC5zZWNvbmQ7Cn0KCnRlbXBsYXRlIDxjbGFzcyBUdXBsZSwgc3RkOjpzaXplX3QuLi4gSXM+CnZvaWQgdHVwbGVfaW4oc3RkOjppc3RyZWFtJiBpcywgVHVwbGUmIHRwLCBzdGQ6OmluZGV4X3NlcXVlbmNlPElzLi4uPikgewogICgoaXMgPj4gc3RkOjpnZXQ8SXM+KHRwKSksIC4uLik7Cn0KCnRlbXBsYXRlIDxjbGFzcy4uLiBBcmdzPgpzdGQ6OmlzdHJlYW0mIG9wZXJhdG9yPj4oc3RkOjppc3RyZWFtJiBpcywgc3RkOjp0dXBsZTxBcmdzLi4uPiYgdHApIHsKICB0dXBsZV9pbihpcywgdHAsIHN0ZDo6aW5kZXhfc2VxdWVuY2VfZm9yPEFyZ3MuLi4+e30pOwogIHJldHVybiBpczsKfQoKaW50IG1haW4oKSB7CiAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgY2luLnRpZShudWxscHRyKTsKCiAgaW50IG47IGludDY0IGs7IGNpbiA+PiBuID4+IGs7CiAgdmVjdG9yPGludD4gYShuKTsgY2luID4+IGE7CgogIGlmIChrID09IDApIHsKICAgIGNvdXQgPDwgKm1heF9lbGVtZW50KGFsbChhKSkgPDwgZW5kbDsgcmV0dXJuIDA7CiAgfQoKICBpbnQgaGlnaCA9IChpbnQpMWU5ICsgMSwgbG93ID0gMDsKCiAgd2hpbGUgKGhpZ2ggLSBsb3cgPiAxKSB7CiAgICBpbnQgbWlkID0gKGhpZ2ggKyBsb3cpID4+IDE7CiAgICBpbnQ2NCBuZWVkID0gMDsKICAgIGZvciAoaW50IGUgOiBhKSBuZWVkICs9IChpbnQ2NCkoKGUgKyBtaWQgLSAxKSAvIG1pZCAtIDEpOwoKICAgIGlmIChuZWVkID4gaykgewogICAgICBsb3cgPSBtaWQ7CiAgICB9IGVsc2UgewogICAgICBoaWdoID0gbWlkOwogICAgfQogIH0KCiAgY291dCA8PCBoaWdoIDw8IGVuZGw7CgogIHJldHVybiAwOwp9CiIiIgoKd2l0aCBvcGVuKCdzb2wuY3BwJywgJ3cnKSBhcyBmOgogICAgZi53cml0ZShjb2RlKQoKc3VicHJvY2Vzcy5Qb3BlbihbJ2crKycsICctc3RkPWMrKzE3JywgJy1PMicsICdzb2wuY3BwJ10pLmNvbW11bmljYXRlKCkKc3VicHJvY2Vzcy5Qb3BlbihbJy4vYS5vdXQnXSwgc3RkaW49c3lzLnN0ZGluLCBzdGRvdXQ9c3lzLnN0ZG91dCkuY29tbXVuaWNhdGUoKQ=='))

Measured memory_bytes: 122720