#1.多种情况需要判断,一开始没考虑到输入形如“a.1.1.1”和“01.2.3.8”类似的情况,只能不断添加判断;
#2.尽可能的简化return语句,设置flag标志位来作为判断依据;
#3.if...else语句嵌套还是有点多,达到了三层,后续可以在优化;
def check_ip():
    ip_lst = input().split('.')
     
    if len(ip_lst) != 4:
        return 0
    flag = 1
    for i in ip_lst:
        if not i.isdigit():
            flag = 0
            break
        else:
            if i.startswith('0') and len(i) > 1:
                flag = 0
                break
            else:
                if int(i) < 0&nbs***bsp;int(i) > 255:
                    flag = 0
                    break
    return flag
 
if __name__ == '__main__':
    if check_ip():
        print("YES")
    else:
        print("NO")